[운영체제] 5. CPU 스케줄링

서요이·2022년 10월 11일
0

운영체제

목록 보기
5/12
post-thumbnail

5. CPU 스케줄링

프로세스의 특성 분류

  • I/O bound job
    CPU 사용시간이 짧은 프로세스
    many short CPU bursts
  • CPU bound job
    CPU 사용시간이 긴 프로세스, 계산 위주의 job
    few very long CPU bursts

여러 종류의 프로세스가 섞여 있기 때문에 CPU 스케줄링이 필요

CPU Scheduler & Dispatcher

  • CPU Scheduler
    Ready 상태의 프로세스 중 CPU를 줄 프로세스 결정
  • Dispatcher
    CPU 제어권을 선택된 프로세스에게 넘김 - 문맥 교환 (context switch)

CPU 스케줄링이 필요한 경우
1. Running → Blocked
2. Running → Ready
3. Blocked → Ready
4. Terminated

Nonpreemptive (=자진 반납) - 1, 4의 스케줄링
Preemptive (=강제로 빼앗음) - 다른 모든 스케줄링

Scheduling Criteria (성능 척도)

  • CPU utilization (이용률) - 높을수록 좋음
  • Throughput (처리량) - 많을수록 좋음
  • Time - 짧을수록 좋음
    • Turnaround time (소요시간, 반환시간) - 큐에서 기다린 시간 + CPU 사용 시간
    • Waiting time (대기시간) - 기다린 시간의 합
    • Response time (응답시간) - 프로세스가 최초로 들어와서 CPU를 얻기까지 걸린 시간

FCFS (First-Come First-Served)

먼저 온 순서대로 CPU 사용 - Nonpreemptive
Convoy effect: short process behind long process

SJF (Shortest-Job-First)

CPU burst time이 가장 짧은 프로세스를 제일 먼저 스케줄

  • Nonpreemptive
    더 짧은 CPU burst time을 가진 프로세스가 들어와도 빼앗지 않음
  • Preemptive (SRTF: Shortest-Remaining-Time-First)
    남은 시간을 기준으로 더 짧은 CPU burst time을 가진 프로세스가 들어오면 빼앗음 - Optimal waiting time 보장
  • Problem
    • Starvation - long burst time 프로세스는 CPU를 사용하지 못할 수 있음
    • CPU 사용시간을 미리 알 수 없음 - 과거 n번의 실제 사용시간을 통해 예측

Priority Scheduling

highest priority를 가진 프로세스에게 CPU 할당
preemptive, nonpreemptive
SJF도 일종의 priority scheduling

Problem - Starvation
Solution - Aging (오래 기다리면 우선순위를 높임)

Round Robin (RR)

각 프로세스에 동일한 크기의 시간 할당 (rime quantum)
할당 시간이 끝나면 timer interrupt

프로세스가 (n-1)q time unit 이상 기다리지 않음
기다리는 시간이 CPU 사용시간에 비례 - 공평함

일반적으로 SJF보다 avarage turnaround time이 길지만 response time은 더 좋음
homogeneous job에서는 비효율적

Multilevel Queue

  • Foreground (interactive) - RR
  • Background (batch - no human interaction) - FCFS

큐에 대한 스케줄링 필요
Fixed priority scheduling - Foregound 먼저 → Background
Time slice

큐 사이의 이동이 불가

Multilevel Feedback Queue

프로세스가 다른 큐로 이동 가능

  • Queue의 수
  • 각 큐의 scheduling algorithm
  • Process를 상위/하위 큐로 보내는 기준
  • 프로세스가 CPU 서비스를 받으려 할 때 들어갈 큐를 결정하는 기준

Multiple-Processor Scheduling

  • Homogeneous processor
    Queue에 한 줄로 세워서 프로세서가 알아서 꺼냄
  • Load sharing
    특정 CPU에 몰리지 않도록 적절히 공유
  • Symmetric Multiprocessing
    각 프로세서가 각자 알아서 스케줄링 결정
  • Asymmetric multiprocessing
    한 프로세서가 나머지 프로세서의 스케줄링 결정

Real-Time Scheduling

  • Hard real-time systems
    정해진 시간 안에 반드시 끝내도록
    offline으로 미리 스케줄링하는 경우도 많음
  • Soft real-time computing
    일반 프로세스에 비해 높은 priority를 갖도록

Thread Scheduling

  • Local Scheduling
    User level thread - 프로세스 자신이 어떤 thread에 CPU를 줄지 결정
  • Global Scheduling
    Kernel level thread - 커널이 어떤 thread에 CPU를 줄지 결정

Algorithm Evaluation

  • Queueing models - arrival rate, service rate → performance index 계산
  • Impementation (구현) & Measurement (성능 측정) - 알고리즘 실제로 구현하여 측정
  • Simulation (모의 실험) - trace 입력하여 가상으로 알고리즘 실행

0개의 댓글