[운영체제] CPU 스케쥴링 (1)

2022. 3. 16. 17:37CS/OS

  • CPU burst : CPU만 실행되는 단계 (load, add, read) 
  • I/O burst : I/O만 실행되는 단계 

: 사람이 사용하는 부분에서는 interactive한 job이 많이 나옴. CPU burst가 짧아지고 많아짐.

CPU and I/O burst in Program Execution
CPU-burst Time의 분포

  • CPU bound job : CPU를 많이사용하는 경우
  • I/O bound job : I/O를 많이 사용하는 경우 (주로 interactive한 job. 사람과 맡닿아 있기 때문. 가능하면 i/o에게 우선적으로 주는 것이 CPU의 작업.)

 - 누구에게 우선적으로 줄 것인가?

 - 얼만큼 시간을 두고 뺏을 것이냐?

 >> 주요한 이슈

 


CPU Scheduler & Dispatcher

(HW 아님. 운영체제 안에서 작동하는 코드)

 

  • CPU Scheduler : ready 상태의 프로세스 중에서 이번에 CPU를 줄 프로세스를 고른다. ( 운영체제 안에서 CPU를 스케쥴링하는 코드)
  • Dispatcher :  CPU 제어권을 CPU를 주는 과정. 프로세스에서 프로세스 넘겨주는 과정을 context switch라고 함. 

 

- 언제 필요한가? 다음과 같은 상태 변화 있는 경우

  1. Running -> Blocked (I/O 요청하는 시스템 콜)
  2. Running -> Ready (할당 시간 만료로 Timer Interrupt)
  3. Blocked -> Ready (I/O 완료 후 인터럽트 : CPU 얻을 수 있는 권한을 줌.)
  4. Terminate : 더 이상 할 일 없음.

1-4 에서의 스케줄링은 nonpreemptive (= CPU를 갖고 있어도 실행 안되어서 강제로 빼앗지 않고 자진 반납.)

다른 스케쥴링은 preemptive (= 강제로 빼앗음.)

'CS > OS' 카테고리의 다른 글

[운영체제] CPU Scheduling (3)  (0) 2022.04.16
[운영체제] CPU Scheduling (2)  (0) 2022.03.18
[운영체제] Process Management (2)  (0) 2022.03.16
[운영체제] Process Management (1)  (0) 2022.03.16
[운영체제] Process 3  (0) 2022.01.24