현대의 CPU는 Preemptive 스케줄링(CPU 자원을 뺏을 수 있는)이며 Round Robin 방식을 사용한다.

스케줄링 알고리즘은 multilevel feedback queue 방법을 사용한다.

 

Multi level feedback queue

CPU ready queue를 여러개 두는 방법, 각 큐마다 priority가 달라 우선순위가 높은 큐에 들어온 프로세스가 먼저 처리됨

CPU burst 시간이 긴 프로세스들은 특정 기간 내에 작업이 끝나지 않아 priority가 더 낮은 큐로 강등당함

I/O burst 시간이 긴 대화형 작업들은 강등당하기전에 끝나기 때문에 보통 빠른 시간내에 결과를 받을 수 있다.

 

Starvation 문제가 있다. -> 주기적으로 모든 프로세스를 가장 높은 우선순위의 큐로 이동시키는 방법으로 해결

 

다양한 변수 설정이 가능하다.

1. 사용할 큐의 개수

2. 큐당 타임슬라이스의 크기

3. 우선순위 상향 조정 기간

 

CPU가 여러개인 경우의 스케줄링

1. Homogeneous Processor인 경우

ㄴ Queue에서 한줄로 세워서 각 프로세서가 알아서 꺼내가게 할 수 있다.

 

2. Load sharing

일부 프로세서에 job이 몰리지 않도록 부하를 적절히 공유하는 메커니즘이 필요

 

3. Symmetric Multiprocessing

ㄴ 각 프로세서가 각자 알아서 스케줄링을 결정

 

4. Asymmetric Multiprocessing

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

 

스레드 스케줄링

Local Scheduling

ㄴ 유저 레벨 스레드의 경우 사용자 수준의 스레드 라이브러리에 의해 어떤 스레드를 스케줄할지 결정

Global Scheduling

ㄴ 커널 레벨 스레드의 경우 일반 프로세스와 마찬가지로 커널의 단기 스케줄러가 어떤 스레드를 스케줄할지 결정

 

스케줄러의 종류

1. Long-term scheduler

ㄴ 어떤 프로세스를 메모리에 올릴 것인가?

2. Short-term scheduler

ㄴ 어떤 프로세스에게 CPU 제어권을 줄 것인가?

3. medium-term scheduler(Swapper)

ㄴ 어떤 프로세스를 swap area로 빼고 올릴 것인가? (Suspended된 프로세스를 먼저 뺀다)

ㄴ degree of multiprogramming을 제어

 

 

 

 

'운영체제' 카테고리의 다른 글

7. Deadlock  (0) 2022.06.09
6. 프로세스 동기화  (0) 2022.06.09
4. 프로세스 생성  (0) 2022.06.09
3. 스레드  (0) 2022.06.09
2. 프로세스  (0) 2022.06.08

+ Recent posts