11-1. CPU 스케줄링 개요
- CPU 스케줄링(CPU scheduling) : 운영체제가 프로세스들에 공정하게 CPU 자원을 배분하는 것
프로세스 우선순위
- CPU 사용 우선순위는 PCB에 저장
- 입출력 집중 프로세스
- I/O bound process
- 입출력 작업이 많은(= 입출력 버스트) 프로세스
- CPU 작업을 빠르게 처리하면, 대기 상태가 되므로, 다른 프로세스가 CPU를 오래 사용할 수 있게 된다 ⇒ 우선순위 높음
- CPU 집중 프로세스
- CPU bound process
- 연산, 명령어 처리 등의 CPU 작업이 많은(= CPU 버스트) 프로세스
- CPU를 오래 사용하게 됨 ⇒ 우선순위 낮음
- 우선순위가 높은 대표적인 프로세스
- 입출력 버스트가 많은 프로세스
- 실시간 프로세스
- 일부 백그라운드 프로세스
스케줄링 큐
Scheduling queue
: 메모리에 적재될 프로세스, 입출력장치를 사용하려는 프로세스 등으로 분리하여 줄을 세우는 것

- 대기 큐 (waiting queue)
- 입출력 장치 사용을 위해 대기하는 줄
- 대기 큐에서 빠져나와 입출력 장치 사용이 완료된 프로세스의 PCB는 준비 큐로 이동해서 CPU 사용을 기다림
- 준비 큐 (ready queue)
- (입출력 장치 사용 종료 후)
- CPU 사용을 위해 기다리는 줄
선점형과 비선점형 스케줄링
- 선점형 스케줄링(preemptive scheduling)
- CPU를 사용중인 프로세스가 있어도 자원을 강제로 빼앗아 CPU를 다른 프로세스에 할당할 수 있는 방식
- 하나의 프로세스가 CPU를 독점할 수 없는 스케줄링
- 프로세스들에 골고루 자원 배분 가능
- 정해진 시간만큼만 사용하고 다른 프로세스에 할당하는 것도 선점형 방식
- 잦은 문맥 교환에 의한 오버헤드 발생
- 비선점형 스케줄링(non-preemtive scheduling)
- 프로세스가 CPU를 사용 중이면 해당 프로세스가 종료될 때까지 다른 프로세스는 할당받을 수 없는 방식
- 하나의 프로세스가 CPU를 독점할 수 있는 스케줄링
- 여러 프로세스가 자원을 골고루 사용할 수 없음
11-2. CPU 스케줄링 알고리즘