CS/OS

10. CPU Scheduling 1

hjkim0502 2022. 3. 23. 18:06
  • CPU burst: 프로세스 실행 과정 중 CPU의 제어권을 얻어 연속적으로 인스트럭션을 실행하는 단계
  • I/O burst: CPU 제어권을 잃고 I/O를 실행하는 단계

  • CPU bound job: 계산 위주의 job (few very long CPU bursts)
  • I/O bound job: CPU를 잡고 계산하는 시간보다 I/O에 많은 시간이 필요한 job (many short CPU bursts)

CPU schedular & Dispatcher

  • 중요 용어: nonpreemtive(비선점형), preemtive(선점형)

  • 시스템 입장에서: CPU utilization, Throughput
  • 프로그램 입장에서: Turnaround time, Waiting time, Response time
    • 선점형 스케줄링에서 대기 시간은 여러번 있을 수 있지만 응답 시간은 최초 한번
  • 한번의 CPU burst 기간 내에서 측정 (프로세스의 첫 실행부터 완전 종료까지가 아님)

 

  • 스케줄링 알고리즘

FCFS
SJF

  • 스케줄링 시점에서 차이가 있음 (프로세스 종료 vs 다른 프로세스 들어옴)
  • starvation 문제: 사용시간이 긴 프로세스가 영원히 CPU를 못 받을 수도 있음
  • 매번 미리 CPU 사용시간을 알 수 없음 (과거 정보로 추정은 가능)
    • exponential averaging

 

 

 

 

 

더 최근의 CPU burst time 값에 더 큰 가중치 값을 가진다

 

 

 

RR

  • 응답시간이 빠른 장점이 있음
  • 각 프로세스의 대기시간이 CPU 필요시간에 비례
  • 특이 상황: 모든 프로세스의 CPU 필요시간이 같다면(비슷해도) 오히려 호율이 떨어진다
    • 이때는 할당 시간을 늘리는게 낫다

 

출처: https://core.ewha.ac.kr/publicview/C0101020140328151311578473?vmode=f