- CPU 의 큐인 ready 큐에 들어와있는 프로그램(프로세스) 중에서 어떤 프로그램에게 우선권을 줄 것인지 결정하는 방식
- 프로그램에 CPU 를 할당한 이후 얼마나 오랜 기간 CPU 를 넘겨줄 것인지 정하는 방식
CPU and I/O Bursts in Program Execution

CPU-burst Time 의 분포

CPU Scheduler & Dispatcher
CPU Scheduler
: ready 상태의 프로세스 중에서 이번에 CPU 를 줄 프로세스를 고른다
Dispatcher
: CPU 의 제어권을 CPU scheduler 에 의해 선택된 프로세스에게 넘긴다 → context switch(문맥 교환)
- CPU 스케쥴링이 필요한 경우는 프로세스에게 다음과 같은 상태 변화가 있는 경우이다
- Running → Blocked (예: I/O 요청하는 시스템 콜) ⇒ nonpreemptive(비선점형, 자진 반납)
- Running → Ready (예: 할당시간 만료로 timer interrupt) ⇒ preemptive(선점형, 강제로 빼앗김)
- Blocked → Ready (예: I/O 완료 후 인터럽트) ⇒ preemptive(선점형, 강제로 빼앗김)
- Terminate ⇒ nonpreemptive(비선점형, 자진 반납)
Scheduling Algorithms
- FCFS (First-Come First-Served)
- SJF (Shortest-Job-First)
- SRTF (Shortest-Remaining-Time-First)
- Priority Scheduling
- RR (Round Robin)
- Multilevel Queue
- Multilevel Feedback Queue
Scheduling Criteria
- 어떤 CPU 스케쥴링이 좋은지 판단하는 성능 척도