5장 - CPU Scheduling

https://user-images.githubusercontent.com/28971015/115238841-1ddb3a80-a159-11eb-9c1a-e880153ead73.png

  • 보통 프로그램은 CPU 작업과 IO작업이 번갈아 일어남
  • CPU burst : CPU 작업이 연속적으로 실행되는 구간
  • I/O burst : I/O작업이 연속적으로 실행되는 구간

https://user-images.githubusercontent.com/28971015/115239253-7ca0b400-a159-11eb-8de8-7b8c816df889.png

  • Interactive job에게 적절한 response 제공 요망
  • CPU와 I/O 장치 등 시스템 자원을 골고루 효율적으로 사용
  • 여러 종류의 job(process)이 섞여 있기 때문에 CPU Scheduling이 필요함
    • CPU job은 문제가 되지 않으나, I/O job은 사람과 interactive하기 때문에 I/O job에게 cpu를 줘야 함
  • I/O Bound Process
    • CPU를 잡고 계산하는 시간보다 I/O에 많은 시간이 필요한 job
    • many short CPU bursts
  • CPU Bound Process
    • 계산 위주의 job
    • few very long CPU bursts

CPU Scheduler & Dispatcher

  • CPU Scheduler
    • Ready 상태의 프로세스 중에서 이번에 CPU를 줄 프로세스를 고름
    • 운영체제 안에서 CPU Scheduling하는 코드
  • Dispatcher
    • CPU를 누구한테 줄지 결정을 했으면 실제로 주는 과정
    • 이 과정이 context switch
  • CPU 스케쥴링이 필요한 경우
    • Running → Blocked (예: I/O 요청하는 시스템 콜) → nonpreemptive(자진 반납)
    • Running → Ready (예: timer interrupt) → preemptive(강제로 빼앗음)
    • Blocked → Ready (예: I/O 완료 후 interrupt) → preemptive
    • Terminate → nonpreemptive

Scheduling Criteria

Performance Index(=Performance Measure, 성능 척도)

  • CPU utilization
  • Throughput
  • Turnaround time(소요 시간, 반환시간)
    • CPU를 쓰러 들어와서 나가기 까지의 시간
  • Waiting time
    • CPU를 Ready Queue에서 기다리는 시간
    • CPU를 얻었다가 뺏겼다가 사용했다가를 반복하는데 이 때 기다리는 시간의 총합
  • Response time
    • Ready Queue에 들어와서 첫 CPU를 얻기까지 걸리는 시간

Multilevel Queue

  • Ready Queue를 우선순위를 여러개로 나누어 관리 함
  • foreground :
  • background(batch) : 상호작용을 하지 않기 때문에 FCFS

MultiLevel Feedback Queue

  • 결국 MQ는 자신의 우선순위를 바꾸지 못함, MFQ에서는 프로세스들이 우선순위를 바꾼다.
  • CPU burst가 짧은 애들한테 우선순위를 먼저주고, 긴 애들은 점점 내려간다.
  • 밑으로 갈수록 할당시간이 늘어나다가, 결국 FCFS에 도달하여 모두 처리할 수 있도록 함

CPU가 여러개 있는 경우의 스케쥴링

  • Homogeneous Processor
  • Symmetric Multiprocess : 모든 CPU들이 대등해서 모든 CPU가 스케쥴링
  • Asymmetric Multiprocess : 하나의 CPU가 데이터 접근과 공유를 책임지고 나머지를 컨트롤 함

Real Time Scheduling

  • Hard real time system
    • 미리 real time을 파악해서 데드라인을 맞출 수 있도록 스케쥴링
  • Soft real time system
    • 반드시 데드라인을 맞추지 않아도 됨
    • soft real-time task 우선순위를 일반 프로세스보다 높게 가지게하여 먼저 처리하게 한다.

Thread Scheduling

  • 프로세스 안 쓰레드의 스케쥴링은 어떻게 할 것인가?
  • Local Scheduling : User Level Thread
  • Global Scheduling : OS가 쓰레드의 존재를 암

참고자료

반효경 교수님의 운영체제 강의를 참고하였습니다. (https://core.ewha.ac.kr/publicview/C0101020140318134023355997?vmode=f)