[운영체제] cpu 스케쥴링

dl_edge·2021년 10월 3일
4

운영체제

목록 보기
7/7

cpu 스케쥴링이란?

Cpu 스케쥴링은 ready queue에 있는 프로세스 중 cpu를 할당할 프로세스를 결정하는 것이다.


cpu 스케쥴러의 두가지 종류

선점형(preemptive)

이미 작업 중인 프로세스에 대해서 우선 순위가 더 높은 프로세스가 등장한다면 context switching이 일어난다.
빠른 응답이 가능해 실시간 시스템이나 시분할 시스템에 적합니다. 하지만, context switching이 잦아 오버헤드가 발생한다.

context switching이란?

비선점형(non-preemptive)

이미 작업 중인 프로세스에 대해서 우선 순위가 더 높은 프로세스가 등장하더라도 context switching이 발생하지 않는다.
모든 프로세스에 대해 공평하게 작업이 가능하지만 앞에 긴 작업이 진행 중인 경우, 짧은 작업은 대기 시간이 길어지고 평균 처리시간이 증가한다.

선점형 vs. 비선점형

  • 선점형 : 프로세스의 cpu를 강제로 뺏어서 실행
  • 비선점형 : cpu를 획득한 프로세스가 스스로 반납하기 전까지 cpu를 뺏기지 않는 방법

디스패처

디스패처란?

Cpu할당을 결정하면 이를 이양하는 작업이 필요한데, 선택된 프로세스가 cpu를 할당받고 작업을 수행할 수 있게 환경설정하는 코드를 말한다.

  • 현재 수행 중인 문맥을 pcb에저장하고, 새로운 프로세스의 문맥을 pcb로부터 복원한 후 그 프로세스에게 cpu를 넘기는 과정을 수행한다.

  • 디스패처가 프로세스를 정지시키고 다른 프로세스에게 cpu를 전달하기까지 걸리는 시간을 디스패치 지연시간이라고 한다.
    디스패치 지연시간의 대부분은 context switching 오버헤드에 해당한다.

-> 선점형 cpu 스케쥴링에서 사용된다.


cpu 스케쥴링 알고리즘

Ready queue에 있는 프로세스를 대상으로 스케쥴링을 한다.

1) first come first served(fcfs)

  • 먼저 온 순서대로 처리한다.
  • 선점형 스케쥴링
  • 소요시간이 긴 프로세스가 먼저 도착하면 짧은 프로세스들은 대기시간이 길어진다 (convoy effect)

    프로세스마다 대기시간은 앞의 프로세스가 완료될 때까지의 시간이고, 평균 대기시간은 이를 프로세스 수로 나눈 시간이다.

2) round robin (rr)

  • 프로세스가 ready queue를 순차적으로 돌며 cpu를 할당한다.
  • 비선점형 스케쥴링
  • 프로세스 작업의 시간 제한이 있다. 시간이 경과하면, ready queue의 끝에 추가되고 다음 프로세스가 cpu를 할당받는다.

    할당시간을 time slice/time quantum 이라고 한다.
    이 시간이 짧아질 수록 모든 프로세스가 동시에 작업하는 것처럼 보인다.
    하지만, 그만큼 context switching이 많이 발생하여 오버헤드가 발생한다.
    이 시간이 길어질수록 fcfs 방식과 유사해진다.

3) priority scheduling

  • 우선순위가 가장 높은 프로세스에게 cpu를 할당하는 스케쥴링이다.
  • 선점/비선점 둘다 가능
    • 선점형 : 더 높은 우선순위를 가진 프로세스가 오면 실행 중인 프로세스를 중지하고 cpu를 반환한다.
    • 비선점형 : 더 높은 우선순위를 가진 프로세스가 오면 ready queue의 head에 넣는다.
  • 우선순위가 낮은 프로세스는 차례가 오지 않는 기아 상태(starvation)가 발생할 수 있다.
    + aging으로 시간이 지나면 우선순위를 높여 해결이 가능하다.

    aging : 기다리는 시간이 길어질 수록 우선순위를 조금씩 높임

4) shortest job first(sjf)

  • cpu burst time이 짧은 프로세스에게 cpu를 할당한다.
  • 비선점형으로 더 짧은 작업시간을 갖는 프로세스가 오면, ready queue에 넣는다.
  • 시스템 프로세스 수를 최소회하고, 스케쥴링 부하가 감소한다.
  • 메모리를 절약하여 시스템 효율이 향상된다.
  • 작업시간이 길면 차례가 오지 않는 기아 상태(starvation)가 발생할 수 있다.

5) shortest remaining time first(srt)

  • 잔여 실행시간이 짧은 프로세스에게 cpu를 할당한다.
  • 선점형으로, 잔여 실행시간이 더 짧은 프로세스가 오면 cpu를 반납한다.
  • 주어진 집합에 대해 최소 평균 대기시간을 제공한다.
  • 잔여 실행 시간을 예측해야한다.

이 다섯개 이외에도,
Highest response ratio nest(hrrn), multi-level queue(mlq), multi-level feedback queue(mfq) 등이 있다.


Reference : https://jgrammer.tistory.com/entry/운영체제-CPU-스케쥴링 https://velog.io/@secho/OS-Cpu-스케쥴링
profile
TIL (Today I Learned!) 전공 까먹기 싫어서 정리하는 중🎁

0개의 댓글