멀티 레벨 큐 (Multilevel Queue)

이화여대 ‘반효경’교수님의 Operating Systems강의 중, ‘CPU Scheduling 2’강의를 수강하고 학습합니다.

Ready Queue를 여러 개의 큐로 나누어, foreground(인터랙티브 프로세스)와 background(배치 작업 - 인간과의 상호작용이 필요 없는 작업)로 분리합니다. 각 큐는 독립적인 스케줄링 알고리즘을 가질 수 있으며, 이는 다양한 작업의 특성을 반영하여 스케줄링을 효율적으로 수행하기 위한 방법입니다.

  • Foreground: 라운드 로빈 (RR) 알고리즘 사용
  • Background: FCFS (First-Come-First-Served) 알고리즘 사용

큐 간 스케줄링 방식

멀티 레벨 큐에서는 큐 자체에 대한 스케줄링도 필요합니다. 주요 방식은 다음과 같습니다.

  • 고정 우선순위 스케줄링 (Fixed Priority Scheduling):
    우선 foreground의 프로세스를 모두 처리한 후에 background 작업을 처리합니다.
    하지만 우선순위가 낮은 background 작업이 계속 대기하는 기아 현상이 발생할 수 있습니다.

  • 타임 슬라이스 (Time Slice):
    각 큐에 대해 CPU 시간을 적절히 할당하여, 여러 큐의 작업들이 공정하게 실행될 수 있도록 합니다.

멀티 레벨 피드백 큐 (Multilevel Feedback Queue)

멀티 레벨 피드백 큐에 대한 이해도

멀티 레벨 피드백 큐는 일반적인 멀티 레벨 큐와 달리 프로세스가 다른 큐로 이동할 수 있습니다. 예를 들어, 프로세스가 시간이 지남에 따라 우선순위가 변경되거나 다른 큐로 이동하는 방식으로 에이징 (Aging)을 구현할 수 있습니다.

  • 상위 우선순위 큐에서 낮은 우선순위 큐로 프로세스가 이동하거나, 반대로 낮은 우선순위 큐에서 상위 우선순위 큐로 이동할 수 있습니다. 이는 기아 현상을 방지하고, 프로세스의 상태에 맞는 적절한 스케줄링을 수행할 수 있는 장점이 있습니다.

다중 프로세서 스케줄링 (Multiple-Processor Scheduling)

CPU가 여러 개 있는 경우, 스케줄링은 더 복잡해집니다.

  • 동일한 프로세서 (Homogeneous Processor):
    모든 프로세서가 동일하다면, 하나의 큐를 사용하여 프로세서들이 알아서 작업을 꺼내 가게 할 수 있습니다.
    하지만 특정 프로세서에서만 실행되어야 하는 작업이 있으면, 상황은 더 복잡해집니다.

  • 부하 분산 (Load Sharing):
    특정 프로세서에 작업이 몰리지 않도록 부하를 적절하게 분배하는 메커니즘이 필요합니다.
    공동 큐를 사용할지, 아니면 별도의 큐를 둘지에 대한 결정도 중요합니다.

  • 대칭형 멀티프로세싱 (SMP, Symmetric Multiprocessing):
    각 프로세서가 자체적으로 스케줄링을 결정하는 방식입니다.

  • 비대칭형 멀티프로세싱 (Asymmetric Multiprocessing):
    한 프로세서가 시스템 데이터의 접근과 공유를 관리하고, 나머지 프로세서들은 이 지시에 따르는 방식입니다.

실시간 스케줄링 (Real-Time Scheduling)

실시간 시스템에서는 특정 작업을 정해진 시간 내에 완료해야 하는 요구사항이 있습니다.

  • 하드 실시간 시스템 (Hard Real-Time System):
    반드시 정해진 시간 안에 작업이 완료되도록 보장해야 합니다.

  • 소프트 실시간 시스템 (Soft Real-Time System):
    우선순위가 높은 작업들이 일반 작업보다 우선되지만, 반드시 시간 내에 완료되지 않아도 됩니다.

스레드 스케줄링 (Thread Scheduling)

스레드 레벨에서도 스케줄링이 이루어지며, 사용자 수준 스레드와 커널 수준 스레드에 따라 달라집니다.

  • 로컬 스케줄링 (Local Scheduling):
    사용자 레벨 스레드의 경우, 사용자 수준 스레드 라이브러리에서 어떤 스레드를 스케줄링할지 결정합니다.

  • 글로벌 스케줄링 (Global Scheduling):
    커널 레벨 스레드의 경우, 커널의 단기 스케줄러가 스레드를 스케줄링합니다.

알고리즘 평가 (Algorithm Evaluation)

스케줄링 알고리즘의 성능을 평가하기 위해 다양한 방법이 사용됩니다.

  • 큐잉 모델 (Queueing Models):
    프로세스의 도착률(arrival rate)과 서비스 속도(service rate)를 확률 분포로 주어 성능 지표를 계산합니다.

  • 구현 및 측정 (Implementation & Measurement):
    실제 시스템에 알고리즘을 구현하여 성능을 측정하고 비교합니다.

  • 모의 실험 (Simulation):
    알고리즘을 시뮬레이션하여, 미리 기록된 작업(trace)을 입력으로 사용하여 성능을 분석합니다.