본문 바로가기
영상 후기/운영체제

영상 후기 - CPU 스케줄러는 프로세스를 어떻게 스케줄링 하는 걸까요? 선점/비선점의 차이는 뭘까요? 디스패처는 또 뭐죠? 이 모든 궁금증을 이 영상으로 간결하게 해결하세요!

by 올리브영 2023. 3. 31.
728x90
반응형

movie

CPU 스케줄러의 역할

  • CPU가 항상 놀지않고 일을 할 수 있도록 프로세스를 선택하는 역할
  • CPU에서 실행될 프로세스를 선택하는 역할

 

Reday상태에 많은 프로세스들이 있는데, Readay상태에 있는 프로세스들을 모아놓는 큐를 ReadyQueue라고 한다.

ReadyQueue에 앞으로 CPU에서 실행되기 원하는 프로세스들이 기다리고 있다.

스케줄러는 ReadyQueue에서 다음번에 어떤 프로세스가 CPU에서 실행되야 할지 선택하는 역할을 한다.

 

 

디스패처(dispatcher)의 역할

  • 선택된 프로세스에게 CPU를 할당하는 역할
  • Context Switching 역할을 디스패처가 한다.
  • Context Switching은 CPU와 관련있기 때문에 민감한 작업이라서 민감한 작업은 os에서 다루어져야하기 때문에 커널 모드에서 실행이 된다. 
  • 커널모드에서 Context Switching이 끝이나서 이제 새로운 선택된 프로세스가 실행이 되어야 하는데 새로운 선택된 프로세스가 실행될 수 있도록 다시 유저모드로 전환이 된다.
  • 커널모드 -> 유저모드로 전환하는 역할도 디스패처이다.
  • 새롭게 선택된 프로세스가 어디서부터 작업을 시작해야하는지도 디스패처가 담당한다.

 

스케줄링의 2가지 선점 방식

  • Nonpreemptive scheduling vs Preemptive scheduling

 

Nonpreemptive(비선점) Scheduling(OS 강제개입이 없음)

  • 러닝상태의 프로세스가 자신의 할일을 완전히 종료되는 경우(terminated)
  • I/O작업을 하러가는 경우(waiting)
  • 작업중인 cpu가 자발적으로 다른 프로세스에게 cpu를 양보하는 경우(interrupt)
  • 위의 3가지 경우에 대해서만 OS에서 개입을 해서 하는 것이 Nonpreemptive Scheduling이라 한다.
    • 비선점인 이유는 러닝상태의 프로세스가 자발적으로 빠져나가기 때문이다.
  • OS입장에서 프로세스가 CPU를 충분히 다 쓸때까지 기다려줌
  • 한 프로세스가 CPU를 다 쓸때까지 기다려야해서 느린 응답성인 단점이 있다.

 

Preemptive(선점) Scheduling

  • 프로세스가 cpu에서 실행이 다 끝나지 않았는데도 OS가개입해서 강제로 준비상태로 보냄
  • 우선순위가 더 높다면 먼저 준비상태에 있는 프로세스보다 CPU를 사용할 수 있다.
  • 강제적으로 스케줄링에 개입을 한다.
  • 여러 프로세스가 CPU에서 더 자주 실행되어서 빠른 응답성을 보여준다.

 

스케줄링 알고리즘

  • 준비상태에 기다리는 프로세스들을 어떤 알고리즘으로 선택할지

 

FCFS(first-come, first-served)

  • 먼저 도착한 순서대로 처리
  • Queue 방식이다.

 

SJF(shortest-job-first)

  • 프로세스의 다음 CPU burst가 가장 짧은 프로세스부터 실행

 

SRTF(shortest-remaining-time-first)

  • 남은 CPU burst가 가장 짧은 프로세스부터 실행
  • SJF에서 선점방식이 적용된 것
  • 중간에 CPU burst가 짧은 프로세스가 준비상태에 들어오면 그 프로세스가 실행된다.

 

priority

  • 우선순위가 높은 프로세스부터 실행

 

round-robin

  • time slice로 나눠진 CPU time을 번갈아가며 실행

 

multilevel queue

  • 프로세스들을 그룹화해서 그룹마다 큐를 두는 방식
  • 더 중요한 그룹, 덜 중요한 그룹으로 나눔.
728x90
반응형