CPU 스케줄러는 프로세스가 생성된 후 종료될 때까지 모든 상태 변화를 조정하는 일을 한다.
가장 큰 틀에서 이루어지는 CPU 스케줄링이다. 시스템 내의 전체 작업 수를 조절하여 시스템 과부하를 방지한다. 이 단계에서는 전체 시스템의 부하를 고려하여 작업 승인
여부를 결정한다. 메인프레임과 같은 큰 시스템에서 규모가 큰 일괄 작업을 처리할 때 사용된다.
가장 작은 단위의 스케줄링이고 실제 작업이 이루어진다. 어떤 프로세스에 CPU를 할당할지, 어떤 프로세스를 대기 상태로 보낼지 결정한다. 고수준의 스케줄링은 식당에서 전체 손님 수를 조절하는 것이고, 저수준 스케줄링은 손님의 주문과 요리 제공 순서를 미세하게 조절하는 단계이다.
고수준 스케줄링과 저수준 스케줄링 사이에서 일어나는 스케줄링이다. 프로세스 활성화 이후 여러 변수로 인해 시스템에 과부하가 걸릴 수 있다. 중간수준 스케줄링은 이러한 현상을 막기 위해 전체 시스템의 활성화된 프로세스 수를 조절한다. 즉, 일부 프로세스를 중지
상태로 옮겨 나머지 프로세스가 원활히 작동하도록 지원하고 다시 여유가 된다면 활성화
한다.
모든 프로세스가 자원을 공평하게 배정 받아야 하고, 자원 배정 과정에서 특정 프로세스가 배제되어서는 안 된다.
시스템 자원이 유휴 시간 없이 사용되도록 스케줄링하고, 유휴 자원을 사용하려는 프로세스에는 우선권을 주어야 한다. 단위 시간당 처리량을 최대화하는 것이다.
우선 순위를 사용하여 중요 프로세스가 먼저 작동하도록 배정한다. 이를 통해 시스템 자원을 점유하거나 파괴하려는 프로세스로부터 자원을 보호해야 한다.
프로세스가 증가해도 시스템이 안정적으로 작동하도록 조치해야 한다. 또한, 시스템 자원이 늘어나는 경우 이 혜택이 시스템에 반영되게 해야 한다.
응답이 없는 경우 사용자는 시스템이 멈춘 것으로 가정한다. 그러므로 시스템은 적절한 시간 안에 프로세스의 요구에 반응해야 한다.
특정 프로세스의 작업이 무한히 연기되어서는 안 된다.
쉽게 배우는 운영체제-한빛 아카데미