[ 쉽게 배우는 운영체제 ] 4-1. 스케줄링의 개요
CPU 스케줄러의 작업
CPU 스케줄러
CPU 스케줄러는 여러 프로세스의 상황을 고려하여 CPU와 시스템 자원을 어떻게 배정할지 결정하는일을 말한다.
스케줄링의 단계
CPU 스케줄링은 규모에 따라 고수준 스케줄링, 중간 수준 스케줄링, 저수준 스케줄링으로 구분된다.
고수준 스케줄링 high level scheduling
가장 큰 틀에서 이루어지는 CPU 스케줄링을 고수준 스케줄링 또는 장기 스케줄링 long-term scheduling, 작업 스케줄링 job scheduling 이라고한다.
고수준 스케줄링은 시스템 내의 전체 작업 수를 조절하는것을 말한다.
여기서 작업은 운영체제에서 다루는 일의 가장 큰 단위로, 1개 또는 여러 개의 프로세스로 이루어진다.
고수준 스케줄링 단계에서는 어떤 작업을 시스템이 받아들일지 거부할지 결정한다. 일단 작업이 시작되면 시스템 자원을 사용하기때문에 기존 작업에 영향을 미친다.
작업 요청이 오면 스케줄러가 시스템의 상황을 고려하여 작업을 승인할지, 거부할지를 결정하므로 고수준 스케줄링을 승인 스케줄링admission scheduling 이라고도 한다.
고수준 스케줄링에 따라 시스템 내에서 동시에 실행 가능한 프로세스의 총개수가 정해진다.
중간 수준 스케줄링 middle level scheduling
고수준 스케줄링과 저수준 스케줄링 사이에 일어나는 스케줄링이다.
중지 suspend 와 활성화active로 전체 시스템의 활성화된 프로세스 수를 조절하여 과부하를 막는다.
즉, 일부 프로세스를 중지 상태로 옮김으로써 나머지 프로세스가 원만하게 작동하도록 지원한다. 이는 프로세스의 상태 중 보류 상태에 해당하며, 저수준 스케줄링이 원만하게 이루어지도록 완충하는 buffer 역할을 한다.
저수준 스케줄링 low level scheduling
가장 작은 단위의 스케줄링이다.
어떤 프로세스에 CPU를 할당할지, 어떤 프로세스를 대기 상태로 보낼지 등을 결정하는 일이다. 아주 짧은 시간에 일어나기 때문에 단기 스케줄링 short-term scheduling이라고 부른다.
스케줄링의 단계 정리
고수준 스케줄링
전체 시스템의 부하를 고려하여 작업을 시작할지 말지를 결정한다. 이 결정에 따라 전체 프로세스 수가 결정되는데 이를 멀티프로그래밍 정도 degree of multiprogramming라고한다. 메인프레임과 같은 큰 시스템에서 규모가 큰 일괄작업을 처리할때 사용된다.
중간 수준 스케줄링
시스템의 부하를 조절하기위해 고려한다. 시스템에 과부하가 걸려서 전체 프로세스 수를 조절해야한다면 이미 활성화된 프로세스중 일부를 보류 상태로 보내고, 보류된 프로세스는 처리 능력에 여유가 생기면 다시 활성화된다.
저수준 스케줄링
실제로 작업이 이루어지는 스케줄링으로 오늘날의 CPU 스케줄러는 대부분 중간 수준 스케줄링과 저수준 스케줄링으로 구분되어 있다. 특별한 명시가 없는 한 저수준 스케줄러를 의미한다.
스케줄링의 목적
- 공평성 : 모든 프로세스가 자원을 공평하게 받아야 하며, 자원 배정 과정에서 특정 프로세스가 배제되어서는 안된다.
- 효율성 : 시스템 자원이 유휴 시간 없이 사용되도록 스케줄링을 하고, 유휴 자원을 사용하려는 프로세스에는 우선권을 주어야 한다.
- 안정성 : 우선순위를 사용하여 중요 프로세스가 먼저 작동하도록 배정함으로써 시스템 자원을 점유하거나 파괴하려는 프로세스로부터 자원을 보호해야한다.
- 확장성 : 프로세스가 증가해도 자원이 안정적으로 작동하도록 조치해야한다. 또한 시스템 자원이 늘어나는 경우 이 해택이 시스템에 반영되게 해야한다.
- 반응 시간 보장 : 응답이 없는 경우 사용자는 시스템이 멈춘 것으로 가정하기때문에 시스템은 적절한 시간 안에 프로세스의 요구에 반응해야 한다.
- 무한 연기 방지 : 특정 프로세스의 작업이 무한히 연기되어서는 안된다.