해결하고자 한 문제
높음
Q5 -> A -> B
Q4
Q3 -> C
Q2
Q1 -> D
Q0
낮음
한개의 긴 실행시간 가진 작업
맨 처음 들어오면 우선순위가 가장 높은 위치에 놓임
매 단계마다 CPU를 다 쓰고 한단계씩 낮은 큐로 내려옴
-> Q0에 계속 머무르게 된다
긴 실행시간 가진 작업을 짧은 작업과 함께
충분히 짧은 작업이라면 우선순위가 가장 낮은 큐에 도달하기 전에 작업이 끝남, 이후에 가장 밑바닥에 있는 긴 실행시간을 가진 작업 시행
따라서 MLFQ는 SJF와 근사하다고 할 수 있다!
starvation
너무 많은 대화형 작업 발생시 긴 실행시간 작업이 CPU를 할당받지 못함
주기적 시간 S가 지나면 모든 작업을 최상위 큐로 이동한다면?
-> starvation 해결
-> CPU 위주의 작업의 변경된 특성 반영 가능
사용자가 스케줄러를 자신에게 유리하게 동작하도록 프로그램 작성 가능
타임 슬라이스가 끝나기 전에 아무 파일 입출력 요청을 내려 CPU를 양도한다면 같은 큐에 머무르기가 가능함
주어진 큐에서 시간 할당량을 소진하면 무조건 우선순위를 낮춘다
-> 입출력 행동과 무관하게 아래단계 큐로 천천히 이동하게 됨
프로그램은 시간 흐름에 따라 특성이 변함