본문 바로가기
Computer Science/운영체제

CPU Scheduling Algorithm

by Luinesse 2024. 1. 18.
반응형

CPU 스케줄링 알고리즘은 여러 프로그램이 실행됐을 때, 프로그램이 유휴상태에 들어가 CPU가 대기하는 동안 다른 프로그램을 실행하는데 실행할 프로그램을 선택하는 방법입니다.

 

CPU 스케줄링 알고리즘에는 여러 방법이 있는데 대표적으로 다음 방법들이 있습니다.

  • FCFS (First Come First Service)
  • SJF (Shortest Job First)
  • Priority
  • Round - Robin
  • Multi Level Queue
  • Multi Level Feedback Queue

각 알고리즘에서 CPU Burst Time과 Turn Around Time을 통해 성능평가를 하여 최적의 알고리즘을 선택합니다.

(Cpu burst time = Cpu 사용 시간, Turn Around Time = Cpu 사용시간 + 대기시간)

 

여기서 스케줄링이란, 순서를 정하는 스케줄링과, 실행할 수 있도록 준비하는 Dispatching이 합쳐진 내용입니다.

 

EX) Algorithm A로 순서를 정함 → P0 ~ Pn 순으로 진행 → Save PCB0, Restore PCB1 .... (Context Switch) → ....

 

성능평가는 3가지 방법으로 Turn Around Time과 Waiting Time, 두번째로 Through Put, 마지막으로 Response Time 으로 성능평가를 진행하는데 주로 1번방법을 사용합니다.

 

SJF와 Priority는 각각 Preemptive와 Non - Preemptive로 나누어서 계산 할 수 있습니다.

Preemptive는 선점이라는 뜻으로, SJF에서 Job 길이가 더 짧은게 있다면, CPU 점유를 뺏아서 사용 가능합니다.

Priority에서도 마찬가지로 우선순위가 더 우선인게 있다면, CPU 점유를 뺏아서 사용 가능합니다.

 

따라서, Non - preemptive, Preemptive에 따라 성능평가 결과가 다르게 도출될 수 있습니다.

 

Round - Robin 방법은 △t의 시간으로 돌아가면서 CPU 점유를 합니다. 그러므로 △t의 크기가 성능을 좌우합니다. 만일 △t가 ∞라면, FCFS랑 동치이고, △t가 0이라면, 너무 빈번한 문맥교환이 발생합니다. 따라서, △t는 적당히 크게 잡는것이 유리합니다.

 

Multi Level Queue는 I/O 위주의 프로세스를 대화식 처리하는 큐와, CPU 위주의 일괄처리 하는 큐를 나누어 진행합니다.

Multi Level Feedback Queue는 우선 순위에 따라 High Queue, Low Queue로 이동하여 다른 알고리즘으로 실행합니다.

 

단, 이 방법은 Queue의 개수나 각 Queue의 Scheduling Algorithm 선정, Low 및 High Queue로의 이동 조건, 어느 Queue로 진입할 건지 등 고려해야할 요소가 있습니다.

 

Priority와 SJF의 문제점으로는, 우선순위나 Job의 길이로 CPU를 점유하기 때문에 어떤 프로그램은 할당을 받지 못하는 경우가 생길 수 있습니다.(Indefinite Waiting) 따라서, Starvation(기아 현상)이 발생하기 때문에 시간이 지날수록 Priority를 높여주는 방식 등으로 기아 현상을 해결해 주어야합니다.

반응형

'Computer Science > 운영체제' 카테고리의 다른 글

Critical Section (임계구역)  (0) 2024.01.19
스레드  (0) 2024.01.19
Context Switch (문맥교환)  (0) 2024.01.18
Protection (보호)  (0) 2024.01.17
운영체제의 프로그램 관리  (0) 2024.01.17