CPU Scheduling
- CPU 자원을 최대한 활용할 수 있는가에 대한 process이다.
- 보통 CPU를 짧은 시간 내에 최대한 활용하기에 이를 적절히 분배하기 위해 필요하다.
- ready queue에 들어간 순서대로 실행을 하는데 이를 우선순위에 따라 다시 정렬하는 방식이다.
short-term scheduler
- 4가지의 경우 프로세스를 새로 선택해야 한다.(scheduling decision)
- running -> wating state(I/O를 받으려고 기다림)
- running -> ready state(interrupt가 발생했을 경우)
- wating -> ready state(interrupt가 발생했을 경우)
- terminate
- 1번과 4번 case에서는 nonpreemptive하다. 즉, 중간에 끊기지 않은 경우
- 2번과 3번 case에서는 preemptive하다. 즉, 중간에 끊기는 경우
Dispatcher
- context switching이 일어나게 해준다. (하나의 프로세스를 멈추고 다른 프로세스를 실행시킬 때), 하나의 프로그램으로 scheduling decision을 할 때도 호출된다.
- Dispatch latency = context switching delay
- latency가 짧을 수록 시스템의 효율성은 빠르다.
무슨 기준으로 scheduling ? what criteria ?
- CPU utilization: CPU가 특정 시간에 얼마만큼 바빴는지, 이를 최대화 시켜야 한다. 여러 개의 프로세스가 동작하는 상황에서 dispatch latency 때문에 100프로를 만족시킬 수는 없다.(스케쥴링 기법에서는 latency가 거의 없다고 생각한다.)
- 아래 4개는 순서에 영향
- Throughput: 일정 시간 동안 프로세스를 끝마친 수, 최대화 시켜야 한다.
- waiting time: 하나의 process가 ready queue에서 기다리는 시간
- turnaround time과 waiting time은 최소화
- Response time: ready queue에 들어가서 첫 반응을 보인 시간, 최소화 시켜야 한다.
First-come, First-served(FCFS)