본문 바로가기

Computer Science/Operating System

<운영체제> 프로세스 스케줄링

 

1. 스케줄링이란

* Context Switching

 - 멀티태스킹은 운영체제를 통해 CPU가 필요한 자원을 프로세스 또는 스레드에 나누는 행위를 의미한다. 우리가 여러 프로그램을 동시에 실행할 수 있는 이유가 멀티태스킹 덕분이다.

 

 

 - 지난 포스팅에서도 봤던 그림이다. 프로세스가 동시에 실행되는 것처럼 보이지만, 실제로 CPU는 한번에 한 가지 명령어 밖에 처리하지 못하기 때문에 동시는 아니다.

 

 - CPU는 동시가 아니라 아주 빠르게 프로세스들을 번갈아가며 실행하고 관리한다. 이렇게 번갈아 실행하는 행위를 Context Switching이라 한다. 빠른 스위칭 덕에 우리는 마치 동시에 프로세스가 돌아가는 것처럼 느끼게 된다.

 

* CPU 스케줄러

 - Context Switching을 할 때 CPU를 적절하고 효율적으로 사용되도록 해야한다. 이전의 프로세스 상태나 새로운 프로세스의 상태에 따라 적절하게 스위칭을 이루어내야 한다. 이것을 담당하는 것이 스케줄러이다.

 

 - 스케줄러는 준비 큐에 있는 프로세스들을 잘 판단하여 CPU를 할당받도록 하는데, 목적을 3가지 정도로 나열할 수 있다.

 

 - 첫째, CPU를 최대한 활용하는 것

 - 둘째, 대기 시간을 최소화 하는 것

 - 셋째, 처리량을 최대화 하는 것

 

 - 위 목적에 부합하도록 다음으로 어느 작업을 CPU에 할당할 것인지를 정하는 알고리즘을 스케줄링 알고리즘이라 한다.

 

2. 비선점형 스케줄링

 - 비선점형 스케줄링은 프로세스가 종료되거나 자발적으로 중지될 대까지 방해하지않고 계속 실행되도록 보장한다.

 

 - 순서대로 처리되며 응답시간을 예상할 수 있다.

 

 - 스케줄러 호출빈도가 낮으며, 일괄처리 시스템에 적합하다.

 

* FCFS

 - First Come First Served 의 약자로, 먼저 자원 사용을 요청한 프로세스에게 자원을 순차적으로 할당해 주는 방식이다.

 

 - 특정 프로세스의 실행시간이 오래 걸리면 뒤의 프로세스들의 대기시간이 자연스럽게 길어진다.

 

* SJF

 - Shortest Job First 의 약자로 CPU점유 시간이 잛은 순으로 프로세스에게 CPU를 할당한다.

 

 - 평균 대기시간을 최소화 할 수 있다는 장점이 있지만, 만일 계속 짧은 프로세스가 들어오면 요구시간이 긴 프로세스는 기아(Starvation)상태가 될 것이다. 

 

* HRRN

 - Highest Response Ratio Next의 약자로 위의 SJF를 보완하였다.

 

 - CPU처리 기간 뿐만 아니라 해당 프로세스의 대기시간을 동시에 고려한 스케줄링 기법이다.

 

3. 우선순위 스케줄링

 - 우선순위가 높은 순서대로 실행하는 스케줄링을 총칭한다.

 

 - 비선점형 방식에서는 높은 우선순위의 프로세스가 들어오면 준비큐(Ready Queue)의 head부분에 넣는다.

 

 - 선점형 방식에서는 새로 도착한 프로세스의 우선순위가 현재 프로세스보다 높으면 CPU를 선점하도록 한다.

 

 - 우선순위 스케줄링의 단점은 위의 SJF에서 언급했듯 우선순위가 높은 프로세스가 계속 들어오면 우선순위가 낮은 프로세스는 기아(Starvation)상태가 될 수 있다는 것이다.

 

 - 위의 문제를 해결하기 위해 에이징(Aging)이라는 기법을 사용한다. 기다린 시간에 비례하여 우선순위를 한 단계씩 올려 기아상태를 방지한다. 위에서 SJF에서 에이징 기법을 도입한 것이 HRRN이라고 볼 수 있다. 

 

4. 선점형 스케줄링

 - 우선되어야 하는 작업이 들어오면 기존 작업에게서 CPU를 뺏고 할당할 수 있는 스케줄링 기법들이다. 즉 새로온 프로세스가 기존 실행중인 프로세스를 중지하고 CPU를 점유한다.

 

 - 모든 프로세스에게 공평하게 CPU 사용시간을 부여할 수 있다.

 

 - 빠른 응답시간에 적합하며 긴급한 프로세스를 제어할 수 있다.

 

* RR

 - Round Robin 의 약자로 시분할 시스템을 위한 선점형 스케줄링 방식이다.

 

 - 프로세스들 사이에 우선순위 없이 제한된 시간 할당량만큼만 실행하고, 완료되지 못하면 'Ready' 상태로 돌린다. 이 들은 준비큐의 끝으로 밀려난다.

 

 - 실시간 시스템에 유리하다.

 

* SRTF

 - Shortest Remaining Time First 의 약자로 SJF의 선점형 방식이라고 보면 된다.

 

 - 현재 작업중인 프로세스를 중단하고 최단 잔여시간의 프로세스를 CPU에 점유시켜 처리한다.

 

 

 

 


참고

 

 

Process와 Thread 이야기

프로세스(Process)

charlezz.medium.com

 

 

CPU 스케줄링 알고리즘

스케줄링(scheduling)은 다중 프로그래밍을 가능하게 하는 운영 체제의 동작 기법이다. 운영 체제는 프로세스들에게 CPU 등의 자원 배정을 적절히 함으로써 시스템의 성능을 개선할 수 있다.

dhkdn9192.github.io

 

[O/S] CPU 스케줄링 알고리즘 (CPU Scheduling Algorithm)

CPU 스케줄링 성능척도와 알고리즘 (CPU Scheduling Algorithm)

velog.io

 

 

#3 - 2) 스케줄링 기법 및 종류와 Aging(에이징) 기법

※ 이 글을 작성하기 전에 본인은 이 분야의 전문성을 가진 전문가가 아님을 미리 밝힙니다. ※ #1. 선점형 기법과 비 선점형 기법 스케줄링은 크게 2가지 기법으로 나눌 수 있다. 1. 비선점형 스

yabmoons.tistory.com