Multilevel QueueReady Queue를 여러개로 분할foreground**(interactive)**background**(batch - no human interaction)**각 큐는 독립적인 스케쥴링 알고리즘을 가짐foreground - RRbackground - FSFS개별 큐에 대해서도 스케쥴링이 필요Fixed priority scheduling(우선순위로 고정)serve all from foreground then from backgroundPossibility of starvationTime slice(시간단위로 분배)각 큐에 CPU time을 적절한 비율로 할당e.g. 80% to foreground in RR, 20% to background in FCFS Multilevel..
CPU Scheduling CPU and I/O Bursts in Program Execution CPU-burst Time의 분포 여러 종류의 job(process)들이 섞여있기 때문에 CPU 스케줄링이 필요하다.Interactive job에게 적절한 response 제공 요망CPU와 I/O 장치 등 시스템 자원을 골고루 효율적으로 사용 프로세스의 특성 분류I/O- bound processCPU를 잡고 계산하는 시간보다 I/O에 많은 시간이 필요한 job(Many short CPU bursts)CPU-bound process계산 위주의 job(Few very long CPU bursts) CPU Scheduler & Dispatcher운영체제의 특정 기능임CPU SchedulerReady 상태의 프로..
Process Management프로세스 생성(Process Creation)Copy-on-write(COW) - write가 발생할때 Copy를 하겠다. 공유를 하다 자식의 내용이 수정되면 그때 부모의 Code Data Stack을 복사하겠다.부모 프로세스가 자식 프로세스를 생성프로세스의 트리(계층 구조) 형성프로세스는 자원을 필요로 함운영체제로부터 받는다.부모와 공유한다자원의 공유공유하는게 좋으나 별개의 프로세스이기 때문에 독립적으로 가지고 있는게 원칙이다부모와 자식이 모든 자원을 공유하는 모델일부를 공유하는 모델전혀 공유하지 않는 모델수행(Execution)부모와 자식은 공존하며 수행되는 모델자식이 종료(terminate)될 때까지 부모가 기다리는(wait=blocked) 모델주소공간(Address..
Thread💡 “A thread(or lightweight process) is a basic unit of CPU utilization”쓰레드 - 프로세스 하나에 CPU 수행 단위만 여러 개 두는 것Thread의 구성(각 쓰레드마다 따로 가지는 부분)Program CounterRegister SetStack SpaceThread가 동료 Thread와 공유하는 부분(=Task)Code SectionData SectionOS Section전통적인 개념의 heavyweight process는 하나의 thread를 가지고 있는 task로 볼 수 있다. 쓰레드 사용시 장점다중 스레드로 구성된 태스크 구조에서는 하나의 서버 스레드가 blocked(wating) 상태인 동안에도 동일한 태스크 내의 다른 쓰레드가 ..
프로세스프로세스의 개념 “Process is a program in execution”프로세스의 문맥(Context)CPU 수행상태를 나타내는 하드웨어 문맥Program Counter각종 Register프로세스의 주소공간code, data, stack프로세스 관련 커널 자료 구조PCB(Process Control Block)Kernel Stack 프로세스의 상태(Process State)CPU가 1개인 컴퓨터를 기준으로 설명프로세스는 아래와 같은 상태(state)가 번갈아가며 수행된다.RunningCPU를 잡고 instruction을 수행중인 상태ReadyCPU를 기다리는 상태(메모리 등 다른조건을 모두 만족하고)Bloacked(wait, sleep)CPU를 주어도 당장 instruction을 수행할 수..