운영체제 스케줄링은 CPU를 효율적으로 사용하기 위해 프로세스를 관리하는 방법이다. 스케줄링 알고리즘은 프로세스가 CPU를 할당받는 순서를 결정하며, 이를 통해 시스템의 성능을 향상시키기도 한다.
비선점형 방식은 프로세스가 스스로 CPU 소유권을 포기하는 방식이며, 강제로 프로세스를 중지하지 않는 방식으로, 컨텍스트 스위칭으로 인한 부하가 적다.
가장 먼저 온것을 가장 먼저 처리하는 알고리즘이다. 사전 프로세스가 오래 걸리는 경우, 후위 프로세스의 대기시간이 길어지는 현상이 발생한다.
준비 큐에서 오래 대기하는 현상을 convoy effect 라고 한다.
실행 시간이 가장 짧은 프로세스를 가장 먼저 실행하는 알고리즘으로, 각 프로세스 간 평균 대기 시간은 짧은 편이지만, 긴 시간을 가진 프로세스가 존재하는 경우, 프로세스가 많은 경우, 계속 뒤쳐지게 되는 단점이 존재한다. 실행 시간의 경우는 과거 실행했던 시간을 토대로 추측해서 우선순위를 정한다.
긴 시간을 가진 프로세스가 실행되지 않는 현상을 starvation 이라고 한다.
참고로 starvation 을 해결하기 위해, 우선순위를 수시로 변경하여 우선 순위를 높일 기회를 가지게 하거나, 오래 기다린 프로세스의 순위를 높이는 aging 기법을 사용해서 이 문제를 보완할 수 있다.
선점형 방식은 현대 운영체제에서 많이 사용하는 방식으로, 지금 사용하고 있는 프로세스를 알고리즘에 중단시키면서 강제로 다른 프로세스에 CPU 소유권을 할당하는 방식을 말한다.
각 프로세스는 동일한 할당 시간을 주고, 그 시간 안에 끝나지 않으면 다시 준비 큐로 되돌리는 알고리즘이다.
예를 들어 만큼의 할당 시간이 부여되었고 개의 프로세스가 운영된다고 하면 시간에 자신의 차례가 되돌아 된다. 할당 시간이 너무 크면 결국 FCFS가 되고, 짧으면 컨텍스트 스위칭이 잦아 오버헤드가 발생하기 때문에 고정적인 일정한 시간을 할당하여 평균 응답시간을 짧게 만드는 것이다. 이 알고리즘은 또한 로드밸런서에서 트래픽 분산 알고리즘으로 쓰이기도 한다.
SJF 에 강제성이 반영된 것으로, 만약 해당 프로세스를 실행 중 이보다 더 짧은 프로세스가 들어오는 경우, 현재의 프로세스를 강제 종료시키고, 짧은 프로세스가 실행되게 된다.
다단계 큐는 우선순위에 따른 준비 큐를 여러 개 사용하고, 큐마다 여러 스케줄링 알고리즘을 적용한 것을 말한다. 큐 간의 프로세스 이동이 안되므로 스케줄링 부담이 작지만 유연성이 떨어지는 특징이 있다. 우선순위가 높은 큐부터 처리가 되기 때문에, 낮은큐의 프로세스는 상대적으로 starvation 이 발생할 확률이 크다.