### Producer and Consumer Problem ### producer(data 넣기), consumer(data 사용) : 컴퓨터가 가지는 상관 관계 (producer 와 consumer이 누구와 관계하고 있느냐에 따라 달라질 수 있다) : data를 공유하기 위해서 중간에 buffer을 사용한다. 1. : producer process는 consumer process에 의해 consumer되는 정보를 생성합니다. 2. : capacity가 무한한 buffer : producer가 data를 buffer에 넣을 때 대기하지 않아도 된다. : consumer인 경우 buffer에 data 없는 경우 wait해야 한다. : 이론적일 때 사용(이상적인 것) 3. : ca..
Synchronize : 현재 작업의 응답이 발생 동시에 다음 작업을 요청하는 작업이 발생하는 것 ### Synchronization Tools ### : process가 끝나기 전에 잘못된 data를 가지고 process를 실행할 경우 문제(잘못된 출력)가 발생하는데 이러한 문제를 해결하기 위한 것 1. : 여러 process가 더 나은 성능을 위해 명령을 동시에 실행하는 컴퓨팅 모델 : Cooperating process가 동시에 shared data에 접근해서 연산작업을 할 수 있는 것 (process가 data를 공유할 때 data에 대한 접근 순서가 동시에 이뤄질 수 있다.) : 협력 p..
### Scheduling Algorithm ### : 성능을 최적할 수 있는 방법 • Maximize CPU utilization. • Maximize throughput. • Minimize turnaround time. • Minimize waiting time. • Minimize response time. 1. : ready queue에 먼저 들어온 process가 먼저 cpu를 할당 받는 것 : FIFO(First input, First output) 대기열로 관리 됩니다. : Non-preemptive scheduling(비선점성) : 간단하고 구현하기 쉽다. 1. process가 ready queue(fifo)에 삽입되면 process의 PCB가 queue의 tail에..
### Dispatcher ### : cpu scheduler가 scheduling을 수행할때 동반되는 module : ready queue의 scheduler가 선택한 process에 cpu 코어를 할당하는 것 : process에서 process로 context 전환 : kernel mode에서 user mode로 전환 : 중지된 작업을 재개하기 위해 사용자 프로그램에서 올바른 위치로 이동(jumping 작업) (얼마나 자주 dispatching rating, context switching이 일어나는 것이 전체 시스템 성능에 영향을 미친다) : dispatcher가 한 process를 중지하고 다른 p..
### CPU scheduling이 필요한 이유 ### : multiple process, limited resources에서 cpu 자원을 잘 할당 하여 시스템 수준을 끌어 올리기 위해서 (cpu 코어에서 한 번에 하나의 프로세스만 실행 할 수 있습니다.) : cpu가 idle이 될 때 마다 ready queue에서 프로세스 중 하나를 선택합니다. : ready queue의 프로세스 중 어떤 프로세스를 running queue로 만들 것인가(cpu를 할당 할 것인가) => i/o등과 같은 자원을 사용할 수 없어 다른 process의 실행이 ready 상태인 동안 한 process가 cpu를 사용할 수 있게 하는 프로세스로 cpu를 최대한 활용하게 하는 것 1. When a ..
1. Many-to-One Model : 여러 user thread + one kernel thread : 여러 thread를 병렬로 실행 할 수 없습니다.(1개씩) : one thread blocking은 모두 block합니다. 2. One-to-One Model : user thread와 같은 수의 kernel thread : user thread의 개수가 많은 경우에 overhead가 발생한다 => 성능 문제 발생 : window, linux에서 사용 3.Many-to-Many Model : Many-to-One Model + One-to-One Model : parallellism을 할 수 있으며 많은 수의 thread의 수를 받아들일 수 있습니다. : 구현하기 어렵습니다.
### Thread ### : 프로세스가 할당받은 자원을 이용하는 실행의 단위 : thread ID, PC(program counter), register set, stack으로 구성된다. : 여러 기능을 담당하는 module 들로 세밀하게 분할 할 수 있는 단위 => process(프로그램 하나를 돌리는 것)에서 여러 thread가 공통 code/ data/ os resource(open files and signal)을 공유합니다. 1. Singlethreading : traditional processes에서 사용된다. : request가 도착 할 때마다 새로운 process를 생성한다. 2. Multithreading : 하나의 process에서 운용하는 둘 이상의 thr..