CS/OS

[OS] CPU 스케줄링 방법

Deveun 2021. 8. 10. 06:36

운영체제의 역할 중에는 CPU 작업 프로세스와 할당 순서를 관리하는 "CPU 스케줄러"의 역할이 있다.

스케쥴러는 공평하게 프로세스를 실행시키고 반응시간을 최소화, 자원의 효율성을 증가시키는 등의 목적을 가지며 이를 위한 스케줄링 방법에는 여러가지가 있다.

 

 

스케줄러 종류

 

o 선점형 스케줄러 (Preemptive)

: 운영체제가 CPU에서 실행 중인 프로세스의 차례를 뺏을 수 있다. ==> interrupt

(장점) 문맥교환(Context Switch)에 의한 낭비가 발생

(단점) CPU의 독점이 없기 때문에 전체적으로 빠른 응답시간

 

o 비선점형 스케줄러 (Non-Preemptive)

: 한 번 실행된 프로세스가 종료될 때까지 CPU를 독점한다. ==> 일괄작업시스템

(장점) 스케줄러의 작업율이 높고, 문맥교환(Context Switch)에 의한 낭비가 없음

(단점) 전체 시스템 입장에서 낮은 처리율


스케줄링 알고리즘

: 오늘날의 Pick!은 다단계 피드백 큐 (Multiple Feedback Queue) 스케줄링이지만, 7가지 스케줄링 알고리즘과 각각의 특징, 장단점에 대해서 차근차근 알아보자.

 

o FCFS (First Come First Served)

: 선입선출. 준비 큐에 들어온 순서대로 CPU에서 처리하는 비선점형 스케줄링.

처리시간이 큰 프로세스가 CPU를 먼저 차지하면 전체 시스템 성능이 저하됨 --> Convey Effect

 

 

 

o SJF (Shortest Job First)

: 최단작업 우선. 실행시간이 짧은 프로세스 순서로 CPU를 할당하는 비선점형 스케줄링

운영체제가 프로세스의 소요시간을 맞추기가 어려우며, 소요시간이 큰 프로세스는 실행되지 않는 문제점 발생 --> 아사(starving)

 

 

 

o HRN (Highest Response Ratio Next)

: 기다린 시간 & CPU 사용시간으로 우선순위를 설정한 비선점형 스케줄링

SJF의 아사현상을 해결하기 위한 기법이나, 여전히 공평성이 낮아 사용X

우선순위 = (대기시간 + CPU 사용시간) / CPU 사용시간

 

 

o RR (Round Robin)

: 순환순서. 타임 슬라이스(time slice) 동안 작업을 하면 interrupt가 발생하는 선점형 스케줄링

 

 

 

o SRT (Shortest Remaining Time)

: SJF + RR 형식의 선점형 스케줄링

여전히 운영체제는 프로세스의 남은 시간을 계산하기 힘들 뿐만아니라 아사 가능성도 존재

 

 

 

o MLQ (Multi-Level Queue)

: 다단계 큐 스케줄링

우선순위에 따라 여러 queue가 존재. --> 고정형 우선순위

높은 우선순위의 queue부터 순서대로 실행

 

 

 

o MLFQ (Multi-Level Feedback Queue)

: 다단계 피드백 큐 스케줄링 

CPU사용 후에는 우선순위를 하나 낮춰주어 MLQ의 저순위 queue의 불리함을 보완한 방법

우선순위가 낮을수록 CPU에서 실행되는 time slice 시간이 길다. --> 제일 낮은 우선순위 작업은 FCFS