MLFQ는 반응성과 효율성은 뛰어난 스케줄링 방식이지만 공정성을 항상 보장하지는 않는다.
예를 들면 I/O 작업을 자주 수행하는 작업에 우선순위를 부여하고 CPU를 길게 사용하는 Intensive 한 작업은 낮은 우선순위로 밀어낸다.
CPU-Intensive 한 작업은 *기아상태*에 빠질 수 있다.
특정 작업이 계속해서 높은 우선순위를 유지하면 다른 작업들이 CPU 사용 기회를 많이 얻지 못한다.
MLFQ는 반응성을 중시하고 CPU시간을 균등하게 배분하지는 않는다.
공평하게 CPU시간을 사용하기 위해 Proportional share(비례 배분)을 사용한다.(긴급한 자원이나 비용을 많이 지불한 사용자에게 더 많은 자원을 할당해 준다.)
위 그림은 15번 뽑았을 때의 결과를 나타낸 표이다.
A가 11번 B가 4번 뽑혔다. 결국 많이 뽑으면 뽑을수록 확률은 75%와 25%에 수렴하게 된다.
프로세스 A에서 스레드 A1과 스레드 A2에 각각 500개의 지역화폐를 주고
프로세스 B에서 스레드 B1에 10개의 지역화폐를 준다
추첨권을 화폐처럼 사용하고 지역변수 화폐를 전역변수 화폐로 시스템이 변환시킨다.
추첨권 양도는 협력 관계에서 특정 작업을 빨리 처리하기 위한 동적인 자원 분배 방식이다.(서버가 클라이언트의 요청을 처리하는 동안 클라이언트가 자신의 추천권을 서버에 양도함.)
추첨권 팽창은 특정 작업의 중요도에 따라 자원 사용량을 동적으로 조정하는 방식이다.
작업시간이 길면 추첨을 많이 해서 확률에 근접하게 수렴을 하겠지만 작업 시간이 짧으면 추첨권을 많이 가지고 있더라도 안 뽑힐 수도 있어 불공정성이 커질 수 있음.
주사위로 치면 1~6이 있는데 2번 굴렸을 때 6 6이 나올 수가 있다. 하지만 계속해서 굴리면 1 2 3 4 5 6 이 비슷한 확률로 수렴하게 된다. 즉 작업시간이 짧으면 운의 요소가 큰 비중을 차지하게 된다.
Lottery Scheduling은 운의 요소가 많이 작용하기 때문에 불공정해질 우려가 있다. Stride Scheduling은 이러한 문제점을 해결하기 위한 스케줄링 기법이다.
Stride Scheduling은 보폭을 이용해서 스케줄링을 한다. 추첨권 수가 많은 프로세스는 보폭이 짧고 추첨권 수가 적은 프로세스는 보폭이 길다. (같은 거리를 가면 보폭이 짧은 사람이 긴 사람보다 다리를 많이 움직여야 함.)
(임의의 큰 수 / 추첨권 수)
Pass는 CPU를 사용한 비율을 의미하고 스케줄러는 가장 작은 pass값을 가진 작업을 선택한다.
Pass가 작은 작업이 선택된다.
추첨 스케줄링은 *비결정적*이고 보폭 스케줄링은 *결정적*이다.
비례 배분은 CPU 스케줄링 방법으로 일반적이지 않다.(운영체제에서 사용하는 표준적인 CPU 스케줄링 방식이 아님)
비례 배분은 CPU 스케줄링보다는 자원의 공유가 명확한 환경에서 사용한다.(가상머신, 클라우드 시스템)
-가상화, 클라우드-
'CS > OS' 카테고리의 다른 글
Thread (0) | 2025.01.24 |
---|---|
Multiprocessor Scheduling (0) | 2025.01.23 |
Multi-Level Feedback Queue란? (0) | 2025.01.10 |
Scheduling이란? (0) | 2025.01.09 |
제한적 직접 실행이란? (1) | 2025.01.09 |