MQ
Multilevel Queue Scheduling
MQ알고리즘은 프로세스가 쉽게 다른 그룹으로 분류되는 환경을 위한 것이다.
MQ partition은 여러개의 분할된 레디큐로 되어 있다. 각 큐에서 그들만의 스케줄링을 사용한다.
위 사진의 5개의 프로세스 집단에 각각 큐를 할당하여 각 큐에서 스케줄링을 한다. 단점으로 큐를 스케줄링하는 것이 필요하다는 것이 있다.
장점으로는 그룹화를 하여 CPU bound와 I/O bound가 섞여서 효율이 안 좋은 것을 막을 수 있다.
이 MQ의 단점을 해결하는 것이 MFQ이다.
MFQ
Mulrilevel Feedback Queue Scheduling
MQ알고리즘은 스케줄링 오버헤드가 낮다는 장점이 있지만 융통성이 없다. 어떤 큐는 비어서 놀고 있고, 어떤 큐는 꽉차서 바빠도 운용상 어쩔 수 없다는 단점을 가진다.(기아 현상이 발생할 가능성이 있다)
그래서 MFQ는 큐 사이에 프로세스들이 이동할 수 있도록 한다.
만약 CPU를 많이 쓴다면 낮은 우선순위의 큐로 옮겨진다. 높은 우선순위의 큐를 떠난다는 뜻이다.
낮은 우선순위의 큐에서 너무 오래 기다리는 프로세스는 높은 우선순위의 큐로 옮겨져서 기아현상을 해결할 수 있다.
MFQ를 위해 결정해야 할 것들이 있다.
1. 큐의 개수
2. 각 큐에 사용할 스케줄링 알고리즘
3. 높은 우선순위의 큐로 프로세스를 옮길 때 결정하는데 사용되는 방법
4. 낮은 우선순위의 큐로 프로세스를 옮길 때 결정하는데 사용되는 방법
5. 프로세스가 실행을 필요로 할때 어떤 큐로 그 프로세스가 들어갈지 결정하는데 사용되는 방법