[운영체제] #9강

Junyoung Park·2022년 8월 2일
0

운영체제

목록 보기
9/25
post-thumbnail
  • New, Running, Waiting, Ready, Termiate → 상태에 따라 CPU가 큐에 넣어 관리
  • CPU, I/O burst: CPU가 alternate하는 가운데 어떤 부분을 더 많이 점유하는가에 따라서 intensive 부분이 달라짐
  • CPU 스케줄러는 프로세스의 어떤 상태를 컨트롤할 수 있느냐에 따라 비선점형/선점형 스케줄러로 구별
  • 스케줄링 알고리즘을 판단하는 기준 중 Waiting time → throughput, turnaround 모두 영향

CPU 스케줄링 알고리즘

FCFS

  • First Come First Served
  • 선착순 알고리즘

각 프로세스가 기다린 시간이 대기 시간이 된다. 어떻게 정렬하느냐에 따라서 평균 대기 시간이 매우 달라지게 된다!

  • Contoy effect: burst time이 긴 프로세스부터 처리하게 되면 이후 프로세스가 대기 시간에 있어서 비용이 크게 됨. 응답성 저하의 주요 원인

SJF

  • Shortest-Job-First
  • 더 짧은 작업부터 큐에 넣는 스케줄링 알고리즘
  • optimal한 알고리즘 → 각 작업의 종료 시간을 사전에 알고 있어야 한다는 조건
  • 프로세스가 ready 큐에 계속 들어 있는 게 아닐 수 있음

Shortest-remaining-time-first

  • 도착 시간 및 선점(preemptive)을 고려한 컨셉
  • 해당 시점에서 "앞으로 남은 시점"이 가장 짧은 프로세스를 큐에 먼저 삽입하는 알고리즘

선점과 비선점의 차이가 매우 크다! 매 순간마다 큐에 들어 있는 프로세스 처리 시간을 비교해서 판단한다!

Priority scheduling

  • 우선순위 기반 스케줄링: 각 CPU가 우선순위를 할당받음. 높은 우선순위일 수록 작은 수의 우선순위 할당
  • SJF: CPU burst time이 짧을 수록 더 높은 우선순위를 할당받는 알고리즘
  • Starvation: 낮은 우선순위 프로세스는 실행되지 않는다는 문제
  • Aging: 시간이 지날 수록 남아 있는 낮아 있는 우선순위 프로세스의 우선순위를 점차 높여주기 → 일정 시간 이상 기다리지 않도록 방지하는 방법

Round Robin

  • 각 프로세스가 CPU 시간을 점유하는 유닛을 가짐
  • 유닛이 끝난 뒤 프로세스가 선점되고 ready 큐 마지막으로 다시 들어감
  • time quantum: 스케줄링의 최소 텀 - HW의 타이머 인터럽트가 커널 모드에 진입하도록 인터럽트 실행. quantum마다 스케줄링 여부를 결정하게 됨
  • time slice: 한 라운드 내에 프로세스에게 할당된 시간
  • performance: (1). large time slice - 컨텍스트 스위칭 주기가 짧음 (2). Small time slice - 응답성이 높지만 낮은 퍼포먼스.
  • 타임 슬라이스는 컨텍스트 스위칭에 비해 커야 함. 오버헤드가 매우 높기 때문
  • 주어진 타임 슬라이스 안에서 프로세스 실행 시간이 종료된 경우 곧바로 라운드를 넘긴다.

Multilevel Queue

  • Ready 큐가 여러 개의 큐로 구성되는 스케줄링 알고리즘
  • foregound / background 형태로 분리
  • 각 큐마다의 스케줄링 알고리즘 존재
  • 스케줄링은 큐 사이에서 이루어짐: Fixed priority scheduling - foreground부터 background까지 동일한 우선순위이기 때문에 starvation 위험. time slice = 각 큐는 서로 다른 시간 할당을 받아서 starvation 문제 해결

Multilevel feedback Queue

  • 우선순위 고정 X
  • 프로세스: 여러 큐 이동 가능
  • 큐의 개수, 각 큐의 스케줄링 알고리즘, 프로세스를 더 높은/낮은 우선순위를 가진 큐로 옮기는 기준 등 고려
profile
JUST DO IT

0개의 댓글