Computer Science/운영체제

[운영체제] 10. CPU Scheduling

minjiwoo 2023. 6. 25. 20:16
728x90

CPU & I/O burst 

  • CPU burst : CPU를 사용하여 작업하는 부분 
  • I/O burst : I/O 작업을 수행하는 부분 

  • 프로그램은 CPU burst 와 I/O burst 번걸아서 연속적으로 실행된다. 

CPU Burst Time의 분포 

  • I/O bound job : CPU 를 잡고 계산하는 시간 보다 I/O에 많은 시간이 필요한 job 이다. 위의 그래프에서 알 수 있듯이 CPU burst를 짧게, 빈도는 많이 사용할 것이다. 
  • CPU bound job : CPU를 잡고 계산을 위주로 하는 job이다. CPU를 길게 연속적으로 사용하며 CPU burst 빈도는 적게 일어난다.  
  • 여러 종류의 job (= process) 이 섞여 있기 때문에 CPU 스케줄링을 통해, 자원을 효율적으로 사용해야 한다. 
  • Interactive job 이 너무 오래 기다리지 않도록 빠른 시간안에 적절한 응답을 제공해주어야 한다.  

 

CPU Scheduler & Dispatcher

CPU Scheduler 

Ready 상태의 프로세스들 중에서 이번에 어떤 프로세스에게 CPU 자원을 줄지 고르는 것을 의미한다. 

Dispatcher 

실제로 CPU 제어권을 CPU scheduler 에 의해 선택된 프로세스에게 넘겨주는 부분이다. 이 과정을 context switch 라고 한다. 

주의할 점 : CPU 스케줄러나, Dispatcher는 독립적인 하드웨어나 소프트웨어가 아니라, 운영체제 상에서 이러한 매커니즘이 코드로 구현된 운영체제 내의 기능이라고 이해하면 쉽다 ! 

CPU 스케줄링이 필요한 경우 

  1. Running -> Blocked : ex. CPU 를 잡고 있다가 오래 걸리는 I/O 작업을 요청받은 경우  
  2. Running -> Ready : ex. 할당 시간이 만료되어서 timer interrput 발생한 경우 
  3. Blocked -> Ready : ex. 요청된 I/O 작업 완료 후 디바이스 컨트롤러가 interrupt 걸어서 프로세스의 상태가 ready로 바뀐 경우 
  4. Terminate : ex. 프로세스가 종료되어 새로운 프로세스에게 넘겨주어야 하는 경우 

1, 4 번 스케줄링의 경우 강제로 빼앗지 않고 자진 반납(non-preemptive)하는 경우이다. 2, 3 은 강제로 빼앗는 경우이다. (preemptive)

728x90