Published 2023. 1. 30. 23:40

CPU 스케쥴링 알고리즘  등장배경

프로세스가 CPU를 점유하여 작업을 수행하는 도중 I/O 또는 Interrupt가 발생하면 일시적으로 프로세스는 CPU를 사용하지 않게 된다. 하지만 계속해서 CPU를 점유하고 있다. 이러한 상황을 줄여, CPU를 최대한 활용하면 시스템의 성능을 끌어올릴 수 있다.

어떻게 프로세스들이 CPU를 효율적으로 사용할 것인가? 라는 고민에서 CPU 스케쥴링 알고리즘이 시작되었다.

스케쥴링 알고리즘은 한정된 자원으로 최고의 성능을 내기 위해 자원을 어떤 프로세스에 얼마나 할당할 지 정책을 만드는 것을 말한다.

CPU 스케쥴링 방식의 종류

CPU 스케쥴링 방식은 크게 선점 스케쥴링과 비선점 스케쥴링으로 구분된다.

선점 스케쥴링은 가장 자원이 필요한 프로세스에게 CPU를 먼저 분배하며 상황에 따라 강제로 회수할 수도 있으며, 프로세스의 실행 순서를 반드시 보장하지는 않는다. 선점 스케쥴링은 I/O요청, I/O응답, Interrupt 발생, 작업완료 등의 상황에서 스케줄링이 일어날 수 있다. 

비선점 스케쥴링은 어떤 프로세스가 CPU를 할당받으면 이 프로세스가 종료되거나 자발적으로 중지할 때까지 실행을 보장하며, 반드시 프로세스의 실행 순서를 보장한다. 비선점 스케쥴링은 작업완료의 상황에서만 스케쥴링이 일어날 수 있다.

CPU 스케쥴링 알고리즘의 종류

CPU 스케쥴링 알고리즘의 종류로는 대표적으로 선입 선처리 스케쥴링(FCFS Scheduling), 최단 작업 우선 스케쥴링(SJF Schedling), 라운드 로빈 스케쥴링(Round Robin Scheduling), 우선순위 스케쥴링(Priority Scheduling) 등이 있다.

선입 선처리 스케쥴링은 가장 먼저 요청한 프로세스에 CPU를 할당해주는 방식이며, 비선점 스케쥴링의 일종이다.

최단 작업 우선 스케쥴링은 CPU 버스트의 길이를 고려해서 스케쥴링을 결정하는 방식이며, 비선점형과 선점형이 따로 존재한다. 비선점형은 현재 실행되고 있는 프로세스는 끝까지 실행되며, 선점형은 현재 실행되고 있는 프로세스의 남은 시간보다 도착한 다음 프로세스가 더 빨리 끝날 수 있는 프로세스라면 다음 프로세스를 실행하도록 바꾼다.

라운드 로빈 스케쥴링은 각 프로세스에 동일한 CPU 할당 시간을 부여해주는 방식이다.

우선순위 스케쥴링은 각각 프로세스에 우선순위를 할당하여 가장 높은 우선순위의 프로세스에 CPU 를 먼저 할당하는 방식이다.

'Today I learned' 카테고리의 다른 글

[Network] URI 와 URL 의 차이점  (0) 2023.01.29
[JavaScript] require/exports 와 import/export 차이  (0) 2023.01.29
2020-11-11  (0) 2020.11.11
2020-02-06 모듈  (0) 2020.02.06
2020-02-05 JavaScript-객체  (0) 2020.02.05
복사했습니다!