[ CS / OS ] CPU Scheduler

황승환·2022년 2월 10일
0

CS

목록 보기
30/60

CPU Scheduler


스케줄링의 대상은 Ready Queue에 있는 프로세스들이다. 즉 CPU의 할당에 대한 스케줄링을 진행한다.

선점형(Preemptive) & 비선점형(Non-preemptive) 스케줄러

선점형(Preemptive) 스케줄러

하나의 프로세스가 다른 프로세스 대신에 CPU를 차지할 수 있다. 즉, 이전에 CPU를 할당받아 사용 중인 프로세스가 존재하더라도 특정 조건에 충족한다면 다른 프로세스가 도중에 CPU를 뺏을 수 있다.

  • SRTF (Shortest Remaining Time First)
  • Priority Scheduling
  • RR (Round Robin)

비선점형(Non-preemptive) 스케줄러

하나의 프로세스가 끝나지 않으면 다른 프로세스는 CPU를 사용할 수 없다. 즉, 이전에 CPU를 할당받아 사용 중인 프로세스가 존재할 경우, 그 프로세스가 종료될 때까지 기다려야 한다.

  • FCFS (First Come First Served)
  • SJF (Shortest Job First)
  • Priority Scheduling

FCFS (First Come First Served)



  • 먼저 온 순서대로 프로세스를 스케줄링한다.
  • 비선점형 스케줄링이다.

문제점

  • convoy effect
    - 소요 시간이 긴 프로세스가 먼저 도착하여 시간을 잡아먹고 있는 부정적인 현상

SJF (Shortest Job First)


  • 다른 프로세스가 먼저 도착했더라도 CPU burst time이 짧은 프로세스에게 CPU를 선 할당한다.
  • 비선점형 스케줄링이다.

문제점

  • Starvation
    - 어떠한 우선 순위로 작업을 처리할 때 우선순위가 낮은 작업이 영원히 처리되지 않는 현상

SRTF (Shortest Remaining Time First)


  • 새로운 프로세스가 도착할때마다 새로운 스케줄링이 이뤄진다.
  • 선점형 스케줄링이다.
    - 현재 수행중인 프로세스의 남은 CPU burst time보다 더 짧은 CPU burst time을 가진 새로운 프로세스가 도착하면 CPU를 넘긴다.

문제점

  • Starvation
    - 어떠한 우선 순위로 작업을 처리할 때 우선순위가 낮은 작업이 영원히 처리되지 않는 현상
  • 새로운 프로세스가 도착할 때마다 스케줄링을 다시 진행하기 때문에 CPU burst time(CPU 사용 시간)을 측정할 수 없다.

Priority Scheduling

  • 우선순위가 가능 높은 프로세스에게 CPU를 할당하는 스케줄링이다. 우선순위는 정수로 제공되고 수가 낮을수록 우선순위가 높게 책정된다.
  • 선점형 스케줄링 방식
    - 더 높은 우선순위의 프로세스가 도착하면 실행 중인 프로세스를 멈추고 CPU를 선점한다.
  • 비선점형 스케줄링 방식
    - 더 높은 우선순위의 프로세스가 도착하면 Ready Queue의 Head에 넣는다. (바로 다음에 실행할 프로세스로 스케줄링된다.)

문제점

  • Starvation
    - 어떠한 우선 순위로 작업을 처리할 때 우선순위가 낮은 작업이 영원히 처리되지 않는 현상
  • Indefinite blocking (무기한 봉쇄)
    - 실행 준비는 되었지만 CPU를 사용하지 못하는 프로세스를 CPu가 무기한으로 대기하는 상태

해결책

  • Aging
    - 우선순위가 낮은 프로세스가 오래 대기했을 경우, 우선순위를 높여주는 방식

RR (Round Robin)

  • 현대적인 CPU 스케줄링이다.
  • 각 프로세스는 동일한 크기의 할당 시간(Time quantum)을 가지게 된다.
  • 할당 시간이 지나면 프로세스는 선점당하고 Ready Queue의 가장 뒤에 다시 들어간다.
  • CPU 사용시간이 랜덤한 프로세스들이 섞여있을 경우에 효율적이다.
  • 프로세스의 Context를 저장할 수 있기 때문에 가능하다.

장점

  • Response Time이 빠르다.
    - n개의 프로세스가 Ready Queue에 있고 할당 시간이 q로 주어질 경우, 각 프로세스는 q 단위로 CPU 시간의 1/n을 얻게 된다. 이는 어떤 프로세스도 (n-1)q time unit 이상 기다리지 않는다는 의미이다.
  • 프로세스가 기다리는 시간이 CPU를 사용할만큼 증가한다.
    - Fairness가 보장됨을 의미한다.

주의할 점

  • 설정한 Time quantum이 너무 커지면 FCFS와 같아지고, 너무 작아지면 스케줄링 알고리즘의 목적에는 이상적이지만 너무 잦은 Context Swtich로 인한 Overhead가 발생하기 때문에 적절한 Time quantum을 설정할 필요가 있다.
profile
꾸준함을 꿈꾸는 SW 전공 학부생의 개발 일기

0개의 댓글