Post

운영체제 (11) - CPU scheduling (3)

MLQ

저번 글에서는, CPU scheduling중 FCFS, SJF, RR(round robin) 방식을 알아보았습니다. 적게는 몇 십개, 많게는 몇 백개의 프로세스를 시분할하여 동시에 작동하게 보이도록 하는 것이 CPU scheduling의 목표입니다. 하지만 위 3개의 scheduling은 뭔가 부족해보입니다. 당연 선입선출인 FCFS, 짧은 작업을 우선순위로 하는 SJF, 돌아가면서 작업하는 RR은 현실의 CPU scheduling으로 사용하기에 한계가 명확해보입니다. 따라서, queue를 여러개 두는 multi level queue 방식이 생겨났습니다.

각 queue에 level을 두어 중요한 프로세스는 높은 priority에, 그렇지 않은 프로세스는 낮은 priority에 두면 합당합니다.

image

하지만, 이는 여러 이슈가 있습니다.

각 큐에서, 어떤 방식으로 scheduling을 할지, queue와 queue사이에 어떻게 scheduling을 할지 등등의 이슈가 생깁니다. 어떠한 상황에도 general하게 작동하는 CPU scheduling 방식을 만들어야 하는데,

MLFQ는 적절히 프로세스의 우선순위를 변경함. 그래서 feedback이라고 한다

시간 다 쓰고 해결 못하면 우선순위 떨어짐. 아 이샛기 오래 걸리구나 다른 애들 먼저 해버리자 할당된 시간 안에 다 해결되면 같은 우선순위를 유지?

4번룰을 새로 작업이 주어진 수준에서 시간 할당을 사용하면(CPU를 몇 번 포기했는지에 관계없이) 우선 순위가 줄어듭니다(예: 대기열에서 아래로 이동) . 같은 레벨은 RR으로 왔다갔다하기에 몇 번 context switching 하는 것은 관계 없음.

5-3-B. Real-Time CPU Scheduling

마감 : 마감 기간이 존재함. 우선 순위 높지만 언제 실행될지 모름

image

This post is licensed under CC BY 4.0 by the author.