<aside>
💡 “운영체제 : 아주 쉬운 세가지 이야기”를 읽으면서 핵심 내용을 정리하였습니다.
이화여대 반효경 교수님의 운영체제 강의를 듣고 복습 차원에서 책 한권을 완독해보고자 합니다.
잘못된 정보가 있다면 댓글 남겨주시면 감사하겠습니다!
</aside>
멀티 레벨 피드백 큐(Multi-level Feedback Queue, MLFQ)
이전까지 스케줄러를 설계를 위해 먼저 핵심 가정들을 세우고 어떤 지표로 스케줄러를 평가할지 선정한 후 가정들을 하나씩 완화해 나가면서 스케줄러를 발전시켜 보았다.
아직 "각 작업의 실행 시간은 사전에 알려져있다" 는 가정을 완화 하지 못했고 이를 해결하는 멀티 레벨 피드백 큐라는 스케줄링 알고리즘에 대해 알아보고자 한다. 멀티레벨 피드백 큐 알고리즘의 목적은 아래와 같다.
프로세스(작업)에 대한 정보 없이 어떻게 목표를 이루는지 알아보자.
MLFQ : 기본 규칙
![https://blog.kakaocdn.net/dn/cnZ4OO/btrXnIW7vwC/ahd8AA0cLDGcOsrZkc3sS0/img.png](https://blog.kakaocdn.net/dn/cnZ4OO/btrXnIW7vwC/ahd8AA0cLDGcOsrZkc3sS0/img.png)
- 구성
- 서로 다른 우선순위를 가진 여러개의 큐로 구성됨
- 실행 준비 상태의 프로세스는 여러 큐중 하나에 속함
- 규칙
- 규칙 1 : priority(A) > priority(B) 이면, A 가 실행 된다.
- 규칙 2: priority(A) == priority(B) 이면, A와 B는 RR 방식으로 실행된다.
- 우선순위 선정 방법
- 각 작업에 고정된 우선순위를 부여하는 것이 아니라 동적으로 우선 순위를 부여함
- 우선 순위를 조정해 주지 않는 다면 낮은 우선순위를 갖는 작업은 실행되지 않을 수도 있음
- 어떤 작업이 키보드 입력을 기다리며 계속적으로 CPU를 양보하면 우선순위를 높힘
- 어떤 작업이 긴 시간동안 CPU를 집중적으로 사용하면 우선순위를 낮춤
- 즉, 작업이 진행되는 동안 작업의 정보를 얻어서 해당 정보를 이용하여 미래 행동예측에 반영함
시도 1 : 우선 순위의 변경 규칙
- 규칙
- 규칙 3 : 작업이 시스템에 진입하면, 가장 높은 우선순위를 부여한다.
- 규칙 4a : 주어진 타임 슬라이스르 모두 사용하면 우선순위는 낮아진다.
- 규칙 4b : 타임 슬라이스를 소진하기 전에 CPU를 양도하면 같은 우선순위를 유지한다.
- 예시
- 한개의 긴 실행 시간을 가지는 작업
- 짧은 작업과 함께 들어 왔을 때
- 입출력 작업을 하는 프로그램과 같이 들어 왔을 때
![https://blog.kakaocdn.net/dn/BtaWy/btrXnK1IJwC/BLgK4efavUTcloauZKmFR0/img.png](https://blog.kakaocdn.net/dn/BtaWy/btrXnK1IJwC/BLgK4efavUTcloauZKmFR0/img.png)
![https://blog.kakaocdn.net/dn/Krum9/btrXrUhJreK/SA8Eijx54JIvJyOlg8iWKk/img.png](https://blog.kakaocdn.net/dn/Krum9/btrXrUhJreK/SA8Eijx54JIvJyOlg8iWKk/img.png)
![https://blog.kakaocdn.net/dn/7Ly8V/btrXo4LRQnL/DlAbdXTckIKnDUrZN0lqg0/img.png](https://blog.kakaocdn.net/dn/7Ly8V/btrXo4LRQnL/DlAbdXTckIKnDUrZN0lqg0/img.png)
현 MLFQ 의 문제점