스케줄러, 디스패처, 선점/비선점

Minseok Kim·2023년 1월 9일
0

해당 포스트는 쉬운코드님의 유튜브 영상을 정리한 내용입니다.


스케줄러 → cpu를 최대한 활용할 수 있도록 프로세스를 선택

ready queue : ready 상태에 있는 프로세스들을 모아놓은 큐

디스패처 → 선택된 프로세스에게 cpu를 할당하는 역할

  • 컨텍스트 스위칭 수행 - 커널 모드에서 실행
  • 컨텍스트 스위칭이 일어난 뒤 커널모드에서 선택된 프로세스의 유저 모드로 전환시키는 역할

스케줄링의 선점 방식

Nonpremmptive scheduling (비선점)

  • running 상태의 프로세스가 exit, I/O or event wait, interrupt 3개의 경우에만 스케줄링 하는 것
  • 프로세스가 자발적으로 running에서 빠져나가기 때문에 Nonpreemptive (os의 개입 없음)
    • 프로세스가 스스로 양보해서 다른 프로세스가 cpu에서 실행되도록 함
  • 신사적, 협력적 (cooperative), 느린 응답성
    • 프로그램의 협력 의지가 필요하기 때문
    • 신사적으로 다른 프로세스가 양보할 때까지 레디 큐에서 기다리기 때문에, 프로세스가 시작은 했지만 cpu에서 실행되지는 않는다. 따라서 응답성은 좋지 않다.

Preemptive scheduling (선점)

  • 기본적으로 비선점 스케줄링의 기능은 전부 포함
  • 추가적으로 프로세스가 끝나지 않았는데도 개입하는 경우 포함
    • time slice를 다 쓴 프로세스를 ready로 전환하는 경우
    • I/O 작업이 끝나서 ready인 프로세스가 현재 실행중인 프로세스보다 우선순위가 높다면 교체하는 경우
    • etc..
  • 적극적, 강제적, 빠른 응답성, 데이터 일관성 문제

스케줄링 알고리즘

FCFS (First Come First Served)

  • 먼저 도착한 순서대로 처리

SJF (Shortest Job First)

  • 프로세스의 다음 cpu burst가 가장 짧은 프로세스부터 실행
    • cpu burst → 프로세스가 cpu에서 한번에 연속적으로 실행되는 시간
  • 이전에 burst된 시간을 참고하여 미래의 burst될 시간을 예측한다.

SRTF (Shortest Remaining Time First)

  • 남은 cpu burst가 가장 짧은 프로세스부터 실행
  • SJF에서 Preemptive가 적용된 방식
    • 프로세스를 실행하던 도중, 더 짧은 실행 시간을 가진 프로세스가 나타난다면 현재 프로세스를 중단하고 그 프로세스를 실행한다.

Priority

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

RR (Round Robin)

  • time slice로 나눠진 cpu time을 번갈아가며 실행
  • 멀티태스킹과 가장 유사한 스케줄링 방식

Multilevel queue

  • 프로세스들을 그룹화해서 그룹마다 큐를 두는 방식
    • 중요한 프로세스와 아닌 것들을 그룹화한다.

0개의 댓글