Multilevel Queue Scheduling
프로세스를 여러 그룹으로 분류하여 각각 다른 큐에 배치하고, 큐마다 다른 스케줄링 알고리즘을 적용하는 방식입니다.
구조
우선순위 높음
┌─────────────────────────┐
│ Queue 1: 시스템 프로세스 │ → FCFS
├─────────────────────────┤
│ Queue 2: 대화형 프로세스 │ → Round Robin
├─────────────────────────┤
│ Queue 3: 배치 프로세스 │ → SJF
└─────────────────────────┘
우선순위 낮음
핵심 특징
| 항목 | 내용 |
|---|---|
| 큐 간 이동 | X 불가능 (고정) |
| 큐 내 알고리즘 | 큐마다 다르게 설정 가능 |
| 큐 간 스케줄링 | 고정 우선순위 or 시간 할당 |
큐 간 스케줄링 방식
고정 우선순위
상위 큐가 비어야 하위 큐 실행
→ 하위 큐 기아(Starvation) 발생 가능
시간 할당 (Time Slice)
Queue 1: CPU 시간 80%
Queue 2: CPU 시간 20%
→ 기아 방지 가능
단점
프로세스가 처음 배정된 큐에 영구히 고정
→ 대화형으로 시작했다가 배치성 작업이 되어도 이동 불가
→ 유연성 부족
→ 이를 해결한 것이 MLFQ (Multilevel Feedback Queue)
MLQ vs MLFQ
| MLQ | MLFQ | |
|---|---|---|
| 큐 간 이동 | X 고정 | O 가능 |
| 유연성 | 낮음 | 높음 |
| 기아 방지 | 어려움 | 에이징으로 해결 |
| 구현 복잡도 | 단순 | 복잡 |
MLQ는 프로세스 특성에 맞는 스케줄링을 적용할 수 있지만, 큐 간 이동이 불가능하다는 한계가 있어 실제 OS에서는 이를 개선한 MLFQ를 주로 사용합니다.