CPU 스케줄링은 무엇일까? 어떻게 동작하는가?

운영체제를 공부하며 정리한 글입니다.
틀린부분이나 잘못된 부분이 있다면 언제든 의견주세요!

 

CPU Scheduling이란?
OS가 CPU를 어떤 프로세스에게 넘겨줄지 정하는 것.

스케줄링을 왜 해야할까?
CPU는 프로세스 실행 중 일때 여러가지 방해? 멈춤 요소가 있다
CPU Burst

스케줄링 판단 요소
CPU 관점
처리량
사용량
사용자 관점
Turnaround time
Waiting time(대기 시간)
Respons time(응답 시간)

처리량이란 cpu가 일을 얼마나 효율적으로 처리하는가를 본다.
사용량은 cpu를 얼마나 잘 사용하는가를 확인한다

사용자 관점에서 턴어라운드 타임이란 프로세스가 ready queue에 들어간 순간부터 빠져나오는 순간까지의 총 시간이다.

대기시간은 cpu를얻기까지 기다린 시간을 말한다.

응답 시간은 처음에 ready queue에 들어와서 처음으로 cpu를 얻기까지의 시간을 말한다.

스케줄링을 결정할 때 고려해야 할 부분이 2가지 있다.
1.  어떤 프로세스에게 넘겨줄 것인가
2. cpu를 얼마나 사용하게 할 것인가

1번의 경우 여러가지 스케줄링 알고리즘이 있다

  • FCFS
  • SJF
  • Priority
  • Round Robin
  • Multilevel Queue
  • Multilevel Feedback Queue
  • Real time


2번의 경우 선점, 비선점으로 나눌 수 있다.
선점 : cpu를 뺏는 것
비선점 : cpu를 뺏지않고 계속 사용하게 두는 것


FCFS scheduling

먼저 온 프로세스를 먼저 실행시킨다. 선착순 진행

모든 프로세스가 동일하게 실행권을 가지므로 평등하다고 볼 수 있다.

 

문제점 : 맨 앞에 실행시간이 긴 프로세스가 있다면 뒤에 더 짧은 프로세스들이 기다려야 한다.

비효율적인 스케줄링이라고 할 수 있다.


SJF(Short Jod First)

CPU 사용시간이 가장 짧은 프로세스를 먼저 실행시키는 스케줄러이다.

 

문제점 : 가장 짧은 프로세스를 먼저 실행시키므로 실행 시간이 긴 프로세스들이 영원히 실행 안될 수도 있다.

 

Priority

CPU 사용시간이 짧은 프로세스 순서로 우선순위를 부여해 실행시키는 스케줄러이다.

다만 SJF와 차이점은 프로세스가 기다리는 시간이 늘어날 수록 우선순위를 높여주어 해당 프로세스도 실행 될 수 있도록 해준다.

Round Robin (RR)

프로세스마다 일정한 시간을 정해놓고 CPU를 사용할 수 있게 하는 방식.

현재 대부분의 OS에서 RR 스케줄러를 사용.

프로세스가 모두 평등하게 CPU를 사용가능.

CPU의 사용시간이 길수록 기다리는 시간과 비례.

스케줄링 알고리즘 중 가장 응답시간이 빠르다.


Multilevel Queue 

ready queue를 여러개 두고 실행시키는 방식.

queue마다 우선순위가 다르며, 프로세스의 우선순위를 판단해 맞는 queue에 넣고 대기시킨다.
시스템 -> 사용자 -> ....학생 순으로 우선순위가 높다.
한번 정해진 우선순위는 변경되지 않는다.

 

문제점 : 우선순위가 낮은 프로세스는 영원히 실행이 안될 수 있다.
 

Multilevel Feedback Queue

Multilevel Queue와 동일하게 2개 이상의 ready queue를 두고 동작.

 

먼저 들어온 프로세스에게 우선순위를 두고 실행시키는 방식.

먼저 들어온 프로세스에게 제일 높은 우선순위를 주고 CPU 시간을 짧게 할당.

만약 그 시간안에 프로세스가 CPU를 다 쓰지 못하면 그 다음 순위 큐로 대기.

다음 순위 큐에서 조금 더 큰 시간 할당

이런 식으로 실행시간이 길어지면 점점 우선순위가 떨어지게 동작한다.

 

종류

foreground - Rround Robin (선점형)
background - FCFS  (비선점형)
스케줄링 방식으로 동작하게 된다.

Real Time Scheduling

Hard = 반드시 해당 시간 안에 작업을 완료하게 함.
Soft = 일반 프로세스에 비해 우선순위가 높은 프로세스.