[OS] CPU scheduling

CPU Scheduling


CPU Scheduling이란

CPU 스케쥴링이란 I/O와 같은 자원을 사용할 수 없어서 프로세스가 대기상태로 진입한 동안 다른 프로세스가 CPU를 사용할 수 있도록 하는 것이다
CPU 스케쥴링의 목표는 시스템을 효율적이고 빠르고 공평하게 만드는 것이다


Scheduling 분류


선점형 스케쥴링

프로세스가 CPU를 점유하고 있는 중에 다른 프로세스에게 CPU 제어권을 뺏긴다

비선점형 스케쥴링

프로세스가 CPU를 점유하고 있는 중에 다른 프로세스에게 CPU 제어권을 뺏기지 않는다

Scheduling Algorithms


FCFS

First Come First Serve
비선점 스케쥴링기법
Ready Queue에 프로세스가 들어온 순서대로 CPU를 할당한다

SJF

Shortest Job First
비선점 스케쥴링기법
먼저 들어온 순서와 관계없이 작업 시간이 짧은 프로세스에게 CPU를 할당한다

Priority Scheduling

우선순위가 낮은 프로세스가 오랜시간동안 작업을 할당받지 못한다면 Aging 기법을 통해 우선순위를 높힌다

선점형 Priority Scheduling

더 높은 우선순위의 프로세스가 도착하면 Ready Queue의 Head에 삽입한다

비선점형 Priority Scheduling

더 높은 우선순위 프로세스 도착시 실행을 멈추고 CPU를 우선순위가 높은 프로세스에게 할당한다

Round Robin

동일한 사용 시간동안 프로세스에게 CPU를 할당한다
할당된 시간이 만료되면 Ready Queue에 삽입한다
할당시간이 너무 크다면 FCFS와 동일하게 동작하게 되고 너무 작다면 context switch의 오버헤드가 발생하게 된다

Multi Level Queue

Ready Queue를 두가지 종류의 Queue로 분리해 각각 다른 스케쥴링 알고리즘을 적용한다
사용자와 인터렉티브하게 사용되는 서비스 혹은 프로세스의 응답시간이 요구되는 프로세스는 포어그라운드 큐에 할당 되고 상대적으로 중요도가 낮은 서비스는 백그라운드 큐에 할당된다

Foreground Queue

우선순위가 높은 프로세스가 할당되는 큐로 Round Robbin같은 알고리즘이 사용된다

Background Queue

우선순위가 낮은 프로세스가 할당되는 큐로 FCFS같은 알고리즘이 사용된다

Multi Level Feedback Queue

Multi Level Feedback Queue에 기아상태 방지를 위한 Aging 기법을 적용한다

참조

더욱 자세한 내용은 추후 정리한 포스팅에서 확인하실 수 있습니다.

Author: Song Hayoung
Link: https://songhayoung.github.io/2020/06/15/OS/CPU_Scheduing/
Copyright Notice: All articles in this blog are licensed under CC BY-NC-SA 4.0 unless stating additionally.