CPU 스케줄링 알고리즘의 종류는 매우 다양하므로 운영체제마다 각기 다른 스케줄링 알고리즘을 사용한다.

이 글에서는 그중 대표적으로 사용되는 스케줄링 알고리즘을 다뤄보고자 한다. 


1. 선입 선처리 스케줄링 (FCFS: First Come First Served Scheduling)

- 단순히 준비 큐에 삽입된 순서대로 처리하는 비선점 스케줄링

- 먼저 CPU를 요청한 프로세스부터 CPU를 할당해 준다.

 

프로세스들이 기다리는 시간이 매우 길어진다는 부작용이 있다. 

FCFS scheduling algorithm


2. 최단 작업 우선 스케줄링 (SJF: Shortest Job First) 

-CPU 사용이 긴 프로세스는 나중에 실행, CPU 사용 기간이 짧은 프로세스는 먼저 실행

SJF


3. 라운드 로빈 스케줄링 (RR:round robin scheduling)

-선입 선처리 스케줄링 & 타임 슬라이스

-타임 슬라이스: 각 프로세스가 CPU를 사용할 수 있는 정해진 시간

-정해진 타임 슬라이스만큼의 시간 동안 돌아가며 CPU를 이용하는 선점형 스케줄링

RR

* 타임 슬라이스의 크기가 중요하다 -> 타임 슬라이스가 지나치게 크면 위에 설명했던 FCFS 스케줄링과 크게 다를 바 없이 오버헤드가 발생할 수도 있다.  반대로 타임 슬라이스가 너무 작으면 문맨 교환에 발생하는 비용이 커 CPU는 프로세스를 처리하는 일보다 프로세스를 전환하는 데에 사용될 수도 있다.


4. 최소 잔여 시간 우선 스케줄링 (SRT:Shortest Remaining Time)

-최단 작업 우선 스케줄링 + 라운드 로빈 스케줄링

-정해진 시간만큼 CPU를 이용하되, 다음으로 CPU를 사용할 프로세스로는 남은 작업 시간이 가장 적은 프로세스를 선택.


5. 우선순위 스케줄링(priority scheduling)

-프로세스들에 우선순위를 부여하고 , 우선순위가 높은 프로세스부터 실행

-우선순위가 같은 프로세스들은 선입 선처리로 스케줄링

-최단 작업 우선 스케줄링

 

우선순위 스케줄링은 기아(starvation) 현상이라는 대표적인 문제점을 가지고 있다.

우선순위가 높은 프로세스만 실행하고 우선순위가 낮은 프로세스는 준비 큐에 먼저 삽입되었음에도 불구하고 실행을 연기시키기 때문이다. 

이를 방지하기 위해서 에이징(aging)이라는 기법을 사용한다. 오랫동안 대기한 프로세스의 우선순위를 점차적으로 높이는 방식이다. 


6. 다단계 큐 스케줄링 (multilevel queue scheduling)

-우선순위 스케줄링의 발전된 형태

-우선순위별로 준비 큐를 여러 개 사용하는 스케줄링 방식

    -우선순위가 가장 높은 큐에 있는 프로세스를 먼저 처리

    -우선순위가 가장 높은 큐가 비어 있으면 그다음 우선순위 큐에 있는 프로세스를 처리


7. 다단계 피드백 큐 스케줄링

-다단계 큐 스케줄링의 발전된 형태

-큐 간의 이동이 가능한 다단계 큐 스케줄링

-다단계 큐 스케줄링에서는 기본적으로 큐 간의 이동이 불가하다. 우선순위가 낮은 프로세스는 계속해서 실행 연기가 우려될 수 있고, 기아 현상이 발생할 수 있기 때문이다.

'CS. > OPERATING SYSTEM' 카테고리의 다른 글

교착 상태  (0) 2023.04.24
프로세스 동기화  (1) 2023.04.18
CPU 스케줄링  (0) 2023.04.11
스레드 (Thread)  (0) 2023.04.07
PROCESS  (0) 2023.04.04

+ Recent posts