CPU 스케줄링 5가지
FCFS
비선점형
가장 기본적으로 먼저 온 순서대로 프로세스를 실행합니다.
- 간단하지만, 대기 시간이 길어질 수 있습니다.
왜냐하면, 나중에 온 프로세스가 먼저 처리되면 더 효율적인 경우도 있는데 해당 방식은 무조건적으로 먼저 온 프로세스를 처리하기 때문입니다.
SJF
비선점형
작업 시간이 짧은 것부터 먼저 실행합니다.
- CPU 작업 시간이 가장 짧은 프로세스를 우선 실행합니다.
- 이론적으로 평균 대기 시간이 가장 짧습니다. 하지만 실제로 작업 시간이 정확히 얼만지 예측이 어렵습니다.
SRTF
선점형
새로운 작업이 들어왔을시, 남은 작업 시간을 계산하여 짧은 것부터 먼저 실행합니다. SJF의 선점형 버전이라고 생각하면 쉽습니다.
- 실행 중이던 프로세스보다 더 짧은 남은 시간을 가진 프로세스가 도착하면, 실행 중인 프로세스를 중단하고 새 프로세스를 실행합니다.
- SJF는 선점이 없지만, SRTF는 실시간으로 남은 시간 비교를 통해 CPU를 넘긴다는 차이가 있습니다. 이로인해 기아 가능성이 있습니다.
Round Robin
선점형
순환하며 공평하게 정해진 시간까지 실행합니다.
- 시간 할당량(Time Quantum) 을 정하고, 각 프로세스에게 일정 시간만큼 CPU 할당합니다.
- 인터랙티브 시스템에 적합합니다.
- 시간 할당량 이후 다른 프로세스로 Context Switching을 하는데, 해당 과정이 자주 발생하면 처리시간이 느려집니다.
Multilevel Queue Scheduling
선점형
프로세스 성격에 따라 여러 스케줄링 방식을 적합하게 사용합니다.
- 시스템, 사용자, 백업 등 유형에 따라 큐를 나누고 각 큐마다 스케줄 방식을 다르게 적용합니다.
예: 상위 큐는 Round Robin, 하위 큐는 FCFS
| 알고리즘 | 장점 | 단점 | 적합한 환경 |
|---|
| FCFS | 간단함 | 대기 시간 길 수 있음 | 순차적 작업 처리 |
| SJF | 평균 대기시간 최소 | 실행시간 예측 어려움 | 배치 처리 시스템 |
| SRTF | 남은 작업시간 최소 | 기아 가능성 있음 | 배치 처리 시스템 |
| Round Robin | 공정한 처리 | 많은 컨텍스트 스위칭 | 사용자 시스템 |
| MLQ | 유연하고 효율적 | 복잡함 | 분류된 작업 환경 |