# CHAPTER 3 운영체제 - 스케쥴러, 디스패쳐

금성·2023년 1월 4일
0

CS 전공지식 노트

목록 보기
9/19

SECTION 3.6 - 스케쥴러, 디스패쳐

1. CPU 스케쥴러와 디스패쳐의 차이

스케쥴러 ( Scheduler )

CPU가 항상 놀지않도록 프로세스를 선택하는 역할

만약 CPU running 부분에 있던 프로세스가 특정 상황으로 인해 terminated, waiting, ready 등으로 갈 수 있기 때문에 비어 있게 됨. 그래서 이 비어있는 코어에 이어서 다른 프로세스가 실행 되도록 레디큐에서 선택하는 역할을 함

  • ready queue

    ready 상태의 (실행을 기다리는) 프로세스들의 상태를 모아놓은 곳

디스패쳐 ( Dispatcher )

선택된 프로세스를 실제로 CPU에서 실행되도록 만드는 역할
=> 선택된 프로세스에게 CPU를 할당하는 역할

  • Context Swiching을 하는것은 민감한 작업 ( CPU와 관련 있기 때문)
    민감한 작업이기 때문에 OS-커널모드에서 작업이 이루어지고 다시 CS가 끝나면 새로 선택된 프로세스가 실행될수 있도록 OS-유저모드로 전환을 해야함

    OS간 전환하는 일도 디스패쳐가 함

쉽게 설명하기 위해 스케쥴러와 디스패쳐를 같이 묶어서 설명하기도 함


2. 스케쥴링 선점방식

비선점 ( NonPreemptive ) scheduling

running 상태인 프로세스가 있을 때 waiting, ready, terminated 세가지 경우에서 자발적으로 프로세스가 빠져나가는 방식
=> 이미 사용되는 cpu를 빼앗지는 못하고 사용이 끝날 때 까지 기다림

  • 신사적 - 모든 프로세스에 요구에 대해 공정하다.
  • 협력적( Cooperative )
  • 응답 시간을 예측할 수 있고 일괄 처리 방식이 적합하다
  • 느린 응답성 - 중요도가 높은 작업이 낮은 작업이 기다리는 경우가 발생할 수 있음

선점 ( Preemptive ) scheduling

비선점 방식이 하는일도 모두 가능 하고 추가적으로 하는 일이 있음
=> 프로세스가 할당받고 사용되고 있는 CPU를 강제로 중지 시키고 CPU를 차지할 수도 있음

  • 적극적
  • 강제적
  • 빠른 응답성
  • 많은 오버헤드(overhead)를 초래
  • 데이터 일관성 문제 가능성 ( 앞에서 말한 장치들의 존재 이유 )

3. 스케쥴링 알고리즘

이런게 있구나~ 하고 넘어가자

앞서 설명한 ready queue에서 기다리고 있는 프로세스들을 어떤 기준으로 선택할지에 대한 알고리즘

  • FCFS ( First-Come, First-Served)

    먼저 도착한 순서대로 처리하는 방식 ( 큐 방식 )

  • SJF ( Shortest-Job-First)

    프로세스의 다음 CPU burst가 가장 짧은 프로세스부터 실행 ( 시간 짧은 )

  • SRTF (Shortest-Remaining-Time-First)

    남은 CPU burst가 가장 짧은 프로세스부터 실행하는 방식
    => 중간에 새로 들어온 CPU burst가 더 짧을 경우 바꿔서 실행함

  • Priority

    우선순위가 높은 프로세스부터 실행하는 방식
    => 선점 방식이라면 CPU작업하는 중간에 높은 우선순위가 오면 작업하던걸 강제로 멈추고 우선 순위가 높은쪽으로 바꿔서 실행, 비선점 방식이라면 하던 작업은 끝마치고 실행

  • RR ( Round-Robin)

    time slice로 나눠진 CPU time을 번갈아가며 실행
    => 처음에 이야기한 멀티태스킹과 가장 비슷한 스케쥴링 방식

  • Multilevel queue

    프로세스들을 그룹화해서 그룹마다 큐를 두는 방식

profile
내일부터 공부 해야지

0개의 댓글