Computer Science/운영체제

[운영체제] CPU 스케줄러

excited-hyun 2021. 5. 14. 22:36
반응형

CPU 스케줄러

Ready Queue에 있는 프로세스들을 스케줄링함.

CPU를 효율적으로 사용하기 위해서는 프로세스를 잘 배정하는 것이 중요.

- 오베헤드를 줄이고, 기아 현상(starvation)을 줄이고, 사용률을 높이는 쪽으로 

 

선점 / 비선점 스케줄링

선점 : OS가 CPU의 사용권을 선점할 수 있는 경우, 강제 회수하는 경우

비선점 : 프로세스 종료나 I/O 등의 이벤트가있을 때 까지 실행 보장 (처리 시간 예측이 어려움)

 

FCFS (First Come First Served)

Ready Queue에 먼저 들어온 순서대로 처리하는 방식 (선입선출). 비선점 스케줄링

문제정: convey effect(소요시간이 긴 프로세스가 먼저 도달하여 효율성을 낮추는 현상)

 

SJF (Shortest Job First)

다른 프로세스가 먼저 Ready Queue에 들어오더라도 수행시간이 짧은 작업을 먼저 수행하는 방식. (비선점, 선점 모두 가능)

평균 대기 시간을 최소화함. 

 

 

Priority Scheduling

 

우선순위가 가장 높은 프로세스에게 CPU를 할당하는 방식.

선점 스케줄링 - 더 높은 우선순위의 프로세스가 도착하면 실행중인 프로세스를 멈추고 CPU를 선점

문제점: starvation (Priority가 낮은 작업의 경우 영영 실행되지 않을 수 있음)

해결: aging 사용 (시간이 지나면서 priority를 변경시킴 - 낮은걸 점점 높게)

 

Round Robin

FCFS에 의해 프로세스들이 보내지면 각 프로세스는 동일한 크기의 time quantum을 갖는다.

time quantum이 크면 FCFS와 같게 되고 작으면 context switching이 너무 잦아져 오버헤드가 증가한다.

time quantum이 지나면 프로세스는 선점 당하고 Ready Queue의 제일 뒤로 가게 된다.

이는 프로세스의 context를 저장할 수 있기에 가능한 방식이다.

 

장점

- response time이 빨라짐.

n개의 프로세스가 q시간을 할당 받는 경우, 각각의 프로세스는 q단위로 CPU시간의 1/n을 얻게 되어 어떤 프로세스도 (n-1)q이상 기다리지 않게 된다.

 

주의할 점

설정한 time quantum이 너무 커지면 FCFS와 같아지며 response time이 늦어진다. 그렇다고 너무 작아지면 잦은 context switch로 인해 overhead가 발생한다. 따라서 적절한 크기의 time quantum을 설정하는 것이 매우 중요하다.

 

 

 

 

 

CS 면접 대비를 위해 아래 깃허브를 기반으로 작성 되었습니다.

github.com/JaeYeopHan/Interview_Question_for_Beginner

 

JaeYeopHan/Interview_Question_for_Beginner

:boy: :girl: Technical-Interview guidelines written for those who started studying programming. I wish you all the best. :space_invader: - JaeYeopHan/Interview_Question_for_Beginner

github.com

 

728x90
반응형