CPU scheduler
- CPU가 놀지 않고 일하도록 프로세스를 "선택"하는 것.
- ready 상태에 놓여진 프로세스 (ready queue)
dispatcher
: 선택된 프로세스가 실제로 CPU에서 "실행"될 수 있도록 하는 것
- context switching은 조심스러운 작업이기 때문에 커널모드에서 실행
- 선택된 프로세스 실행을 위해 유저모드로 전환
- 실행되어야할 프로세스의 적절한 위치를 제공
스케줄링 선점 방식
- Nonpreemptive(비선점)
- 프로세스끼리 스스로 양보하면서 실행됨 -> 협력적(cooperative)
- 단점: 느린 응답성
- 기다리고 있는 시간이 길어져서 느리다고 느낄 수 있음
-preemptive(선점)
- 주어진 시간이 끝나면 강제로 프로세스를 끌어내리는 것 => 강제적
- running 중인 프로세스를 주어진 시간이 끝나면 ready로
- 단점: 데이터 일관성의 문제
다양한 스케줄링 알고리즘
- FCFS(FIFO)
: quere 방식
- SJF(shortest-job-first)
: 프로세스 cpu burst 짧은 순으로
- SRTF(shortest-remaining-time-first)
: 남은 cpu burst가 짧은 순으로
- Priority
: 우선순위가 높은 프로세스 순으로
- RR(round-robin)
: time slice로 나눠진 CPU time을 번갈아 가면서 실행
- Multilevel quere
: 프로세스들을 그룹화 해서 그룹마다 queue로 실행