Multilevel Queue Scheduling [ 크래프톤 정글 60일차 ]

jinsung·2025년 7월 11일

크래프톤 정글 9기

목록 보기
52/59


내용과 상관없는 유머 이미지

크래프톤 정글 9주차의 Pintos 를 진행하면서, 공부키워드로 Multilevel Queue Scheduling 에 대해서 공부하게 되었는데요.

CPU의 스케쥴링 알고리즘 중 MQS 스케줄링에 대해서 알아보겠습니다.

Multilevel Queue Scheduling

자료구조 Queue는 다들 알고 계시죠?
CPU에 어떤 프로세스를 할당해줄까 하는 고민중에 Queue자료구조를 사용하기로 한거예요.

근데 그냥 Queue하나만 쓰는건 아니고, 여러개의 큐를 쓰자! 그래서 멀티레벨 큐 스케쥴링 입니다.

멀티레벨 큐 스케줄링(Multilevel Queue Scheduling)은 이름 그대로 여러 개의 큐를 사용하는 스케줄링 방식입니다.
여기서 중요한 핵심 개념은 프로세스들을 특성에 따라 분리된 큐에 할당한다는 것입니다.
예를 들어, 시스템 프로세스, 대화형(interactive) 프로세스, 배치(batch) 작업, 백그라운드 작업 등 성격이 다른 작업들을 각각 다른 큐에 넣어 관리합니다.

각 큐는 고정된 우선순위(priority)를 가지며, 큐 내부는 다시 FCFS(First Come First Serve)나 Round Robin 등의 스케줄링 알고리즘을 사용할 수 있습니다.

📌 구조 예시

보통 다음과 같은 구조를 가집니다:

  • Queue 0 (가장 높은 우선순위) – 시스템/실시간 프로세스 (예: 키보드 입력 처리)
  • Queue 1 – 대화형(인터랙티브) 작업 (예: 브라우저, 텍스트 에디터)
  • Queue 2 – 일반 사용자 프로그램 (예: 컴파일러)
  • Queue 3 (가장 낮은 우선순위) – 배치 작업 (예: 로그 정리, 백업 등)

🧠 스케줄링 방식

멀티레벨 큐 스케줄링은 두 가지 방식으로 운영됩니다:

  1. 비선점형 (Non-preemptive)
    한 큐가 CPU를 점유 중이면, 더 높은 우선순위 큐에 작업이 생겨도 대기해야 합니다. 간단하지만 응답성이 떨어질 수 있습니다.

  2. 선점형 (Preemptive)
    더 높은 우선순위의 큐에 프로세스가 도착하면, 현재 실행 중인 작업을 중단(preempt)시키고 CPU를 빼앗아갑니다. 사용자 인터랙션 응답성이 좋아집니다.

🎯 장점

  • 각 큐에 특화된 스케줄링이 가능하여 유연하다.
  • 중요도/성격에 따라 자원을 차등 배분할 수 있다.
  • 대화형 프로세스의 응답성이 좋아진다.

⚠️ 단점

  • Starvation(기아) 문제 발생 가능: 낮은 우선순위의 큐는 오랜 시간 CPU를 못 쓸 수 있습니다.
  • 큐 배정 기준이 고정(static)되어 있어 유연성 부족. 프로세스가 실행 도중 특성이 바뀌어도 큐를 옮기지 못합니다.

ex) 처음엔 대화형이었지만 점점 계산만 하는 배치 작업이 된 경우.

개념은 어렵지 않습니다.

Multilevel Feedback Queue

이 단점을 보완하기 위해 멀티레벨 피드백 큐(MLFQ)라는 스케줄링 알고리즘이 등장합니다

MLFQ는 프로세스의 실행 특성에 따라 동적으로 큐를 이동시켜줄 수 있습니다.

예를 들어, 너무 오래 CPU를 쓰는 작업은 더 낮은 우선순위 큐로 이동시키고, 짧게 CPU를 사용하는 작업은 높은 우선순위로 유지시키는 식입니다.

특히 Pintos 에서는 MLFQ를 사용해서 스케줄러를 실습하게 됩니다.

다들 화이팅, 벨로그 쓸 시간이 점점 줄어들고 있다. 공부량이 너무 많아서

1개의 댓글

comment-user-thumbnail
2025년 7월 12일

이모지 선정이 좀 아쉽네요

답글 달기