CS/OS

Multi-Level Feedback Queue란?

2zreal 2025. 1. 10. 18:08

Multi-Level Feedback Queue는 우선순위가 다른 여러 개의 큐를 둬서 우선순위가 높은 큐 순서대로 작업을 실행시키고,

같은 큐 내에서는 라운드 로빈 방식으로 작업을 실행시킨다.

 

기본적으로 작업이 들어오게 되면 가장 높은 우선순위 큐에 작업을 배치한다. 만약 작업이 타임 슬라이스를 모두 소모하면 우선순위를 감소시키고 타임 슬라이스를 다 사용하지 못하고 I/O를 하러 가면 동일한 우선순위를 유지한다.

 

이러한 MLFQ의 문제점은 I/O작업이 많은 시스템이라면 CPU-intensive 작업(데이터 처리, 시뮬레이션, 수학적 연산 등)을 실행하지 못할 수 있다.

그리고 프로세스를 타임 슬라이스를 99프로 사용한 후 I/O를 요청하도록 코딩하면 CPU를 독점하는 상황이 발생한다.

 

이러한 기본적인 MLFQ를 개선하기 위해 일정 시간이 지나면 모든 작업을 최상위 큐로 이동시킨다.

큐에서 실행한 누적 시간이 타일슬라이스를 초과하면 우선순위를 감소한다.(스케줄러 갖고 놀기 방지)

 

높은 우선순위일수록 짧은 타임 슬라이스를 가지고 낮은 우선순위일수록 긴 타임 슬라이스를 가지게 함으로써 응답성을 높일 수 있고 CPU-intensive 한 작업을 높은 우선순위 큐에서 오래 머무르지 않게 할 수 있다. 낮은 우선순위 큐에 있는 작업은 CPU-intensive 작업일 확률이 높은데 긴 타임슬라이스를 부여함으로써 CPU 효율을 높이고 Context switch 오버헤드를 줄일 수 있다.

 

개선된 MLFQ를 사용함으로써 반응시간과 반환시간을 모두 개선할 수 있다.

'CS > OS' 카테고리의 다른 글

Multiprocessor Scheduling  (0) 2025.01.23
Proportional share이란?  (0) 2025.01.22
Scheduling이란?  (0) 2025.01.09
제한적 직접 실행이란?  (1) 2025.01.09
Process API란?  (0) 2025.01.08