본문 바로가기

컴퓨터/운영체제5

[UCB CS162 OS] Lec07 Synchronization(2) Producer-Consumer with bounded buffer producer는 shared buffer로 여러가지를 넣고, consumer는 여기서 꺼내어 쓰는 구조로, 이를 적절히 동기화시켜야 한다. Semaphores non-negative integer value로 down() or P()(positive가 되기를 기다리다가, 1을 감소시킨다. wait() operation과 유사)과 up() or V()(1을 증가시키고, 기다리는 P를 깨운다. signal() operation과 유사) (개인적인 평가: 입장권의 개수가 제한되었다고 생각할 수 있을 것 같다.) semaphores에서는 negative value가 없고, 초기 설정을 제외하고는 어떤 value를 쓸 수는 없다(P, V만 해야.. 2024. 1. 12.
[UCB CS162 OS] Lec06 Synchronization(1) Context Switch Kernel은 각 프로세스를 PCB(process control block)으로 나타낸다. process 간의 문맥전환은 기존 프로세스의 상태를 해당 PCB에 저장하고, 실행하려는 새로운 프로세스의 상태를 해당 PCB로부터 열어와서 실행한 뒤에 다시 그 PCB에 저장하고, 처음에 저장해 둔 PCB로부터 기존 프로세스를 다시 불러와서 실행하는 방식으로 이루어진다. 여기서 PCB로의 save/load는 kernel에서 이루어진다(privilege level: 0). 이를 위해서는 system call이나 interrupt가 필요하다. Process(내지 Thread)의 수명주기 process는 new, ready(run될 수 있는 상태), running(실행되는 상태), waiti.. 2024. 1. 11.
[UCB CS162 OS] Lec05 IPC, Pipes and Sockets Web server 서버의 network socket이 read() syscall을 보내면 일단 기다린 뒤에, kernel이 네트워크로부터 arriving packet을 받아오고, 이는 서버에 전달됨. 반대로 write()할 때는 별도의 wait는 없음. 하지만 어느 경우든 read와 write는 kernel-buffered임. Communication Between Processes why? shared task "process"는 inter-process communication을 어렵게 하도록 만들어져 있다. 서로 정보를 interfere/steal하지 못하게 되어 있음. 따라서 이러한 보안에 "구멍"을 내야함 -> IPC(Inter-Process Communication) How? 가장 간단하게는.. 2024. 1. 9.
[UCB CS162 OS] Lec04 Files & I/O Semaphore "generalized lock"으로서, non-negative integer value를 가지며 두 가지 연산을 지원 P() or down(): 양수가 되기를 기다리다가, 양수가 되면 1 감소 V() or up(): 세마포어를 1 증가시키고 기다리는 P를 깨움 mutual exclusion으로 사용하려면, initial value = 1 semaphore.down(); // critical section semaphore.up(); signaling other threads initial value = 0 ThreadJoin { semaphore.down(); } Process(cont'd) exec wait: tcpid = wait(&status)와 같이 쓰게 되면, pare.. 2024. 1. 5.