운영체제 - CPU 스케쥴링(4)

2020-09-24

OS를 공부하면서 정리를 한 내용들 입니다.

이번 챕터는 CPU 스케쥴링에 관련해 정리한 챕터입니다.


어제 살펴보았던 RR(Round-Robin)방법은 스케쥴링에 있어서 상당히 획기적인 방법입니다.

time quantum(시간 할당)을 통해서 적절히 CPU를 나눠준다는 것이 특징입니다.

SJF는 CPU burst time이 긴 프로세스의 경우 극심한 손해를 보는 경우 였고,

FCFS는 좀 운에 따라 할당되는 편이었습니다.

그렇다면 RR에서는 기다리는 시간이 본인이 CPU를 쓰려는 시간에 비례하는 특징이 있습니다.

간단히 말해, 짧은 작업의 경우 한번에 끝낼 수 있고, 긴 작업의 경우 CPU를 얻었다가 뺏겼다가를 반복하게 됩니다.

Multilevel Queue

CPU 하나에 할당을 기다리는 Ready queue가 여러 개로 분할된 경우입니다.

이 줄은 2개로 나뉘어지고 각 queue는 독립적인 스케쥴링 알고리즘을 가집니다.

  • foreground(interactive) - RR
  • background(batch ~ no human interaction) - FCFS

batch : 일반적으로 오래 CPU를 사용하는 작업

각 queue마다 우선순위가 있습니다.

Fixed priority scheduling

foreground에 무조건적인 우선순위를 줌으로써 foreground에 있는 작업이 끝나지 않으면,

background에서는 CPU를 할당받지 못합니다.

foreground가 비었을 때 background가 실행이 됩니다.

그렇기 때문에 starvation이 발생할 가능성이 있습니다.

Time slice

각 queue마다 CPU time을 적절한 비율로 할당하는 방법입니다.

예를 들어, foreground에 RR으로 80%, background에 FCFS로 20%로 할당하게 된다면,

starvation의 가능성은 현저히 줄어들게 됩니다.

Multilevel Feedback Queue

이 방식은 Multilevel Queue처럼 여러개의 queue가 있지만,

프로세스가 queue마다의 이동이 가능합니다.

Aging을 아래와 같은 기준을 두고 구현할 수 있습니다.

Multilevel-feedback-queue scheduler를 정의하는 파라미터들

  • queue의 갯수
  • 각 queue마다 다른 스케쥴링 알고리즘 사용
  • Process를 상위 큐로 보내는 기준
  • Process를 하위 큐로 내쫓는 기준
  • 프로세스가 CPU 서비스를 받으려 할 때 들어갈 큐를 결정하는 기준

Multiple-Processor Scheduling

  • CPU가 여러개인 경우 스케쥴링은 더욱 복잡해집니다.
  • Homogeneous processor인 경우

      1. Queue에 한줄로 세워서 각 프로세서가 알아서 꺼내가게 할 수 있습니다.
      2. 반드시 특정 프로세서에서 수행되어야 하는 프로세스가 있는 경우 복잡해집니다.
    
  • Load sharing

      1. 일부 프로세서에 job이 몰리지 않도록 부하를 적절히 공유하는 메커니즘이 필요합니다.
      2. 별개의 큐를 두는 방법 vs 공동 큐를 사용하는 방법
    
  • Symmetric Multiprocessing(SMP)

      각 프로세서가 각자 알아서 스케쥴링 결정
    
  • Asymmetric Multiprocessing

      하나의 프로세서가 시스템 데이터의 접근과 공유를 책임지고 나머지 프로세서는 기기에 따르는 방식
    

-참고 KOCW 이화여자 대학교 반효경 교수님 : 운영체제 강의