CPU의 스케줄링에 대해 알아보자.
스케줄링은 무엇인가?
- OS의 Ready Queue에 있는 프로세스들을 특정 우선순위를 기반으로 CPU를 할당받게 해주는 알고리즘이다.
스케줄링 알고리즘의 종류는 무엇이 있는가?
- FCFS (First Come First Served)
- SJF (Shortest Job First)
- Priority Scheduling
- RR (Round Robin)
하나씩 알아보도록 하자.
FCFS (First Come First Served)
- 말 그대로 먼저 온 프로세스부터 처리하는 알고리즘이다.
문제점 : 소요시간이 긴 프로세스가 먼저 도달할 경우 효율성을 낮추는 현상이 생길 수 있다.
SJF (Shortest Job First)
- 먼저 도착한 프로세스와 상관 없이, CPU의 처리시간이 가장 짧은 프로세스에게 먼저 할당해주는 알고리즘이다.
문제점 : 기아(Starvation) CPU의 처리시간이 긴 프로세스의 경우, 계속해서 우선순위가 뒤로 밀려날 수 있다.
Priority Scheduling
- 우선순위가 가장 높은 프로세스에게 CPU를 할당하는 스케줄링이다.
문제점 : 기아(Starvation)
해결책 : Aging - 아무리 우선순위가 낮은 프로세스라도, 오래 기다렸다면, 우선순위를 높여주는 형식으로 해결
RR (Round Robin)
- 각 프로세스는 동일한 크기의 할당시간을 갖는다. 할당 시간이 끝날 경우, 프로세스가 선점당하고, 다시 ReadyQueue의 맨 뒤로 줄을 선다. 최근에 가장 많이 사용하는 스케줄링 알고리즘이다.
장점
1. 공정한 스케줄링이다. (자원을 한 프로세스이 끝날 때까지 기다리는게 아니라, 시간이 끝나면 맨 뒤로 보내기 때문)
2. 반응속도가 빠르다. (ReadyQueue에 n개의 프로세스와 q의 time quantum을 가지고있다고 가정하면, 모든 프로세스는 최대한 (n-1)q 시간 안에 CPU사용을 시작하게 됨을 보장할 수 있다.
주의사항
time quantum이 너무 커지면 FCFS랑 다를게 없어지고, 너무 작아지면 잦은 문맥교환으로 성능이 저하될 수 있다. 그러므로, time quantum을 적당하게 조절해주어야 한다.
'CS 기초' 카테고리의 다른 글
[운영체제] 메모리의 구조 (0) | 2021.11.01 |
---|---|
[Design Pattern] MVC Pattern (0) | 2021.09.28 |
[CS기초] 컴파일러, 인터프리터 (0) | 2021.09.14 |
[운영체제] 프로세스와 쓰레드 (0) | 2021.09.13 |