Multi-level Feedback Queue Scheduling
- RR은 응답시간은 단축시키나 반환 시간은 최악(너무 자주 잘라서)
- MLFQ는 이러한 RR의 한계점을 극복하기 위해 고안해낸 방법이다
- RR의 장점인 짧은 평균 응답 시간은 유지하면서, RR의 단점인 짧은 task의 불리함을 해결하자는 것이다.
- RR에서는 Queue를 1개만 운용했다면, MLFQ는 다양한 Time Quantum을 가지는 여러 Queue를 동시에 운용한다.
- Turn around time의 최적화 → 짧은 작업 우선
- MLFQ 는 대화식 사용자에게 응답시간을 최소화 → 빠르시스템인것처럼 느끼게
여러 개의 Queue는 상단에서 하단으로 내려갈수록 Time Quantum은 길어지고, 이는 당연히 process가 CPU를 점유했을 시 한 번에 실행되는 시간이 길어짐을 뜻한다. 반면 상단에서 하단 Queue로 내려갈수록 우선 순위는 떨어져 점유 가능성은 낮아진다. 더 정확히는, 하단에 있는 Queue가 Pop되려면 해당 Queue의 상단에 있는 모든 Queue가 empty 상태여야만 한다.
MLFQ
- 여러개의 큐
- 각 큐는 다른 우선순위 부여
- 실행 준비 된 프로세스는 여러 프로세스가 있을 수 있다.
- 하나의 큐에있는 프로세스들의 우선순위는 동일
- 높은 우선순위에 있는 큐에 있는 프로세스가 높은 우선순위
상위 큐 : CPU 차지 확률 높음
하위 큐 : CPU차지 시간 높음
MLFQ RULE
- 우선순위가 더 높은 (더 상단의 Queue에 위치한) task를 먼저 수행한다.
- 우선순위가 같은 (같은 Queue에 위치한) task 중에서는 먼저 들어온 task를 수행한다.
- 처음 실행되는 task에 대해서는 가장 높은 우선순위를 부여한다(최상단 Queue에 push한다).
- TQ를 모두 소모하면, 우선순위가 낮아진다(아래의 Queue에 push한다).
- TQ를 모두 소모하기 전에 CPU 점유를 해제하면, 같은 우선순위를 유지한다(같은 Queue에 push한다).
MLFQ 문제점
- Starvation(기아) 상태 발생 가능성
- 실행 시간이 길어 우선순위가 낮아진 task 는 계속 신규 task가 들어오게 될경우 기아 상태에 빠짐
- 프로그램 재작성하여 스케줄러를 자신에 유리하게 동작 할 가능성
- 지정된 할당 시간보다 더 많은 시간을 할당 받도록..
- 시간에 따라 프로그램 특성이 변할경우 우선순위 조정이 불가능할 가능성
- cpu 위주의 작업이 대화형 작업으로 바뀌어도 우선순위는 낮음
MLFQ 개선
Gaming Tolerance
- mlfq의 각 큐 레벨에서 cpu사용시간 측정하고 저장
- 주어진 큐 레벨에서 cpu 다 쓰면 우선순위를 낮춘다.
일정 시간
- 일정시간 s가 지나면 모든 task들의 우선순위를 초기화한다.이러한 작업을 Boosting이라고 부른다. MLFQ의 1, 3번 문제를 해결할 수 있다.
'Operating System' 카테고리의 다른 글
[Operating System] Address and Memory (0) | 2022.12.29 |
---|---|
[Operating System] 공평한 스케줄러 (0) | 2022.12.28 |
[Operating System] 스케줄링 (0) | 2022.12.19 |
[Operating System] 프로세스 실행 (0) | 2022.12.19 |
[Operating System] 프로세스 (0) | 2022.12.19 |