운영체제 - CPU 스케쥴링(4)
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 이화여자 대학교 반효경 교수님 : 운영체제 강의