스케줄링
- 여러 개의 프로세스가 존재하기 때문에 자원을 할당할 프로세스를 선택해야 함
- 이 때 프로세서 사용 시간을 프로세스에게 분배하는 작업
목적
-
시스템 성능 향상
- 성능
- 응답 시간 (Interactive System, Real-time System)
- 작업 처리량 (Batch System)
- 자원 활용도 ($$$ System)
- …
- 목적에 따라 어떤 성능을 최대로 올릴 건지 고려하여 스케줄링 기법 선택

기준 및 단계
- 기준: 프로세스의 특성, 시스템 특성, 프로세스 긴급성/우선순위/총 실행시간, …
- 프로세스의 특성
- CPU Burst: CPU
사용 시간 → 긴 경우 Compute-bounded process
- I/O Burst: I/O
대기 시간 → 긴 경우 I/O-bounded process
- 단계: Long-term, Mid-term, Short-term scheduling
- Long-term
(Job → Process)
- Job에서 어떤 것들이 Process가 될지 결정하는 스케줄링
- 시분할 시스템에서는 Long-term 스케줄링이 불필요 (시간을 나누기 때문)
- Mid-term
(Swap-out → Swap-in)
- 메모리 할당(Swapping)을 결정하는 스케줄링
- Short-term
(Ready → Run)
- 프로세서를 할당할 프로세스를 결정하는 스케줄링
- 엄청 많이 발생되므로 빨라야 함 (성능과 밀접)
정책
선점 vs 비선점
- 선점 (누가 내 작업을 빼앗을 수 있다)
- 할당 시간이 종료되거나 우선순위가 높은 프로세스가 기다리고 있으면 프로세서에서 나가야 함
- 응답성이 높아지지만, Context switch 자주 발생
- 비선점 (빼앗을 수 없다)
- 스스로 자원을 반납할 때 까지 사용
- Context switch 적지만, 이 작업이 오래 걸리면 응답 시간이 증가, 긴급한 작업이 일을 못함
우선순위 (정적 vs 동적)
- 정적
- 프로세스 생성 시 결정된 우선순위가 유지됨
- 구현이 쉽고 우선순위 계산이 적지만, 환경 변화에 대응이 어려움
- 동적
- 프로세스 상태 변화에 따라 우선순위 변경
- 환경 변화에 유연하지만, 구현이 복잡하고 우선순위 계산 시 부하가 큼