CPU 스케줄링은 작업을 처리하기 위해 프로세스들에게 CPU를 할당하기 위한 정책을 계획하는 것이다. CPU를 효율적으로 사용하기 위해서는 프로세스들을 잘 배정해야 한다. CPU 스케줄링은 Ready Queue에 있는 프로세스를 대상으로 CPU를 할당하는 순서와 방식을 결정한다.
프로세스가 CPU를 점유하여 작업을 수행하는 도중 I/O 또는 Interrupt가 발생하면 일시적으로 프로세스는 CPU를 사용하지 않는데도 CPU를 계속 점유하고 있다. 이러한 상황을 줄여서, CPU를 최대한 활용하면 시스템의 성능 개선을 꾀할 수 있다.
결국 "어떻게 프로세스들이 CPU를 효율적으로 사용하게 할 것인가?"
라는 고민에서 CPU 스케줄링이 출발한다고 할 수 있다.
프로세스 실행은 CPU 실행
과 입/출력 대기
의 사이클로 구성된다.
프로세스의 실행은 CPU 실행(execution)과 I/O 요청 대기(I/O wait)가 번갈아가며 이루어지는데, 이를 CPU I/O Burst Cycle
이라고 한다.
CPU 스케줄링은 크게 선점 스케줄링과 비선점 스케줄링으로 구분된다.
선점형 스케줄링: 하나의 프로세스가 CPU를 차지하고 있을 때, 우선 순위가 높은 다른 프로세스가 현재 프로세스를 중단시키고 CPU를 점유하는 스케줄링 방식
장점
단점
그래서 선점형 스케줄링은 우선순위가 높은 프로세스를 빠르게 처리해야 할 경우
유용하다.
비선점 스케줄링: 한 프로세스가 CPU를 할당받으면 작업 종료 후 CPU 반환 시까지 다른 프로세스는 CPU 점유가 불가능한 스케줄링 방식
장점
단점
그래서 비선점형 스케줄링은 처리 시간 편차가 적은
특정 프로세스 환경에 유용하다.
선점 스케줄링에 속하는 CPU 스케줄링 알고리즘 기법에는 SRT
라운드로빈
다단계 큐
다단계 피드백 큐
스케줄링이 있다.
SRT
: Shortest Remaining Time 스케줄링으로, 짧은 시간 순서대로 프로세스를 수행한다. 남은 처리 시간이 더 짧은 프로세스가 ready queue에 들어오면 그 프로세스가 바로 CPU를 선점한다.
라운드 로빈 스케줄링
: 각 프로세스가 같은 크기의 CPU 시간을 할당받는 스케줄링 방식이다.
다단계 큐 (Multi-level Queue) 스케줄링
: Ready Queue를 여러 개 사용하는 스케줄링 방식이다. 각각의 Queue는 자신의 스케줄링 알고리즘을 수행하며, Queue와 Queue 사이에도 우선순위를 부여한다.
다단계 피드백 큐 스케줄링
: 다단계 큐와 비슷하나, 프로세스들이 큐를 이동할 수 있다.
비선점 스케줄링에 속하는 CPU 스케줄링 알고리즘 기법에는 HRN
SJF
우선순위
기한부
스케줄링이 있다.
HRN
: Highest Response ration Next 스케줄링으로, 수행시간의 길이와 대기 시간을 모두 고려해 우선 순위를 정하는 스케줄링 방식이다.
SJF
: Shortest Job First 스케줄링으로, 선점 스케줄링의 SRT와 동일하게 Queue 안에 있는 프로세스 중 수행시간이 짧은 것을 먼저 수행하며, 평균 대기 시간을 감소시킨다.
우선순위 (priority) 스케줄링
: 프로세스에게 우선순위를 정적 / 동적으로 부여하여 우선순위가 높은 순서대로 처리한다.
기한부 (deadline) 스케줄링
: 작업을 명시된 시간이나 기한 내에 완료하도록 스케줄링한다.