CPU 스케줄링
- CPU 스케줄링이란 스케줄링 알고리즘을 통해 선택된 쓰레드가 CPU 자원을 할당받아 실행될 수 있도록 하는 것을 말합니다. CPU 스케줄링 알고리즘의 종류는 다양하고 운영체제마다 서로 다른 스케줄링 알고리즘을 사용하고 있습니다.
CPU 스케줄링 알고리즘 종류
선입 선처리 스케줄링( FCFS : First Come First Scheduling )
- 선입 선처리 스케줄링은 비선점형 방식으로 먼저 들어온 쓰레드를 순서대로 CPU 자원을 할당해주는 스케줄링 알고리즘입니다. 이러한 방식은 공정해 보일 수는 있으나 지금 당장 급하게 CPU 자원을 필요로 하는 쓰레드에게 먼저 CPU 자원을 할당해줄 수 없다는 단점이 있습니다.
최단 작업 우선 스케줄링( SJF : Shortest Job First Scheduling )
- 최단 작업 우선 스케줄링은 CPU 사용 시간이 가장 짧은 순서대로 쓰레드에게 CPU를 할당하는 방식으로서 쓰레드가 너무 장기간 CPU 자원 할당을 기다리지 않도록 하기 위해 사용하는 스케줄링 알고리즘입니다. 이러한 방식은 CPU 자원을 오랫동안 사용하는 쓰레드들이 CPU 자원을 원활하게 할당받지 못하여 쓰레드 기아( Thread Starvation ) 상태가 될 수 있습니다.
라운드 로빈 스케줄링( Round Robin Scheduling )
- 라운드 로빈 스케줄링은 레디큐에 Enqueue된 쓰레드 순서대로 타임 슬라이스만큼 CPU 자원을 할당하는 방식의 스케줄링 알고리즘입니다. 타임 슬라이스의 크기는 OS 마다 다르며 타임 슬라이스의 크기가 너무 클 경우 쓰레드가 지나치게 대기해야 하는 현상이 발생되며, 타임 슬라이스가 너무 짧을 경우 컨택스트 스위칭 비용이 커질 수 있습니다.
우선 순위 스케줄링( Priority Scheduling )
- 우선 순위 스케줄링은 프로세스 우선순위 클래스와 쓰레드 우선 순위를 부여해서 가장 높은 우선 순위를 가진 쓰레드를 실행하는 스케줄링 알고리즘입니다. CPU 자원을 할당받아 실행중인 쓰레드보다 현재 레디 큐에 있는 쓰레드의 우선 순위가 높을 경우 레디 큐에 있는 쓰레드가 CPU 자원을 선점합니다. 이러한 방식은 빠른 응답을 요구하는 쓰레드가 빠르게 CPU 자원을 할당 받을 수 있지만 보다 낮은 우선순위를 가진 쓰레드들은 CPU 자원을 원활하게 할당받지 못하여 쓰레드 기아( Thread Starvation ) 상태가 될 수 있습니다. 이러한 방식의 단점을 해결하고자 우선 순위가 낮아서 CPU 자원을 오랫동안 할당받지 못한 쓰레드들에게 우선순위를 점차 높이는 에이징 기법을 같이 사용합니다.
다단계 큐 스케줄링( Multilevel Queue Scheduling )
- 다단계 큐 스케줄링은 우선순위 스케줄링의 발전된 형태로서 우선 순위별로 레디 큐를 여러 개 사용하는 스케줄링 방식입니다. 높은 우선 순위 큐를 우선적으로 확인하여 스케줄링하는 방식이기 때문에 보다 편리한 스케줄링 방식입니다.
Windows 스케줄링 방식
- OS 마다 스케줄링 알고리즘이 다르며 스케줄링 알고리즘을 복합적으로 사용하는 경우가 많습니다. Windows는 우선순위 선점형 기반의 라운드 로빈, 다단계 큐 스케줄링 등을 사용하고 있습니다.
'운영체제 > Common' 카테고리의 다른 글
가상 메모리( Virtual Memory )와 페이징( Paging )이란? (0) | 2022.11.09 |
---|---|
외부 단편화( External Fragmentation )와 내부 단편화( Internal Fragmentation )란? (0) | 2022.11.08 |
명령어 사이클( Instruction Cycle ) 과 인터럽트( Interrupt )란? (0) | 2022.10.27 |
프로세스 ( Process ) 와 쓰레드 ( Thread ) 란? (0) | 2022.10.03 |
쓰레드 기아 ( Thread Starvation ) 현상이란? (0) | 2022.10.01 |