본문 바로가기

Information Technology/OS

[운영체제] CPU Scheduling(1)

이 글은 개인의 학습을 위해 정리한 글입니다. 이점 참고하고 읽어주세요;)


CPU만 사용하는 단계를 CPU burst, I/O만 사용하는 단계를 I/O burst라고 부름.

프로그램이 작동할 때, CPU와 I/O가 번갈아가면서 작동함.

프로그램의 종류에 따라 CPU burst와 I/O burst의 빈도, 길이가 다를 수 있음.

 

CPU burst의 호출 빈도가 많고(I/O burst 빈도가 잦기 때문) 지속 시간이 짧은 작업을 I/O bound job.

CPU burst의 호출 빈도가 적고 지속 시간이 긴 작업을 CPU bound job. 

 

I/O bound job은 주로 Inter-active 한 작업. 즉 사용자와 자주 interaction을 하는 작업.

 

CPU Scheduler: 어떤 프로세스에게 CPU 제어권을 줄 지 결정하는 것이 CPU 스케쥴러. 스케쥴러는 운영체제 안에서 스케쥴링을 하는 코드. 이걸 그냥 CPU 스케쥴러라고 부름

 

Dispatcher: 스케쥴러가 누구에게 CPU를 줄 지 결정하면, 그 CPU 제어권을 해당 프로세스에게 넘겨주는 역할을 하는 운영체제의 커널 코드. CPU 제어권을 뺏길 프로세스의 context를 저장하고, 넘겨받을 프로세스의 context를 펼쳐놓음.

 

* 스케쥴링이 필요한 경우

1) CPU를 잡고 있는 프로세스가 I/O 작업처럼 시간이 오래 걸리는 작업을 할 때 자진해서 CPU를 내어놓고 blocked

2) CPU를 잡고 있는 프로세스의 사용 시간이 다 되어 ready상태가 되어 다시 CPU를 기다림

3) 요청했던 I/O작업이 끝나면 I/O Device controller가 CPU에 인터럽트를 걸어서 blocked 된 프로세스를 ready 상태로. 우선순위 기반 스케쥴링의 경우, CPU를 빼앗기는 프로세스가 아직 사용 시간이 남아있더라도 I/O 처리가 끝난 프로세스의 우선순위가 더 높다면 그 프로세스에게 CPU가 넘어감

4) 프로세스가 종료됐을 때

 

1번과 4번은 CPU를 강제로 빼앗기지 않고 자진 반납하는 nonpreemptive

2번과 3번은 CPU를 강제로 빼앗기는 preemptive

 

'Information Technology > OS' 카테고리의 다른 글

[운영체제] CPU Scheduling(3)  (0) 2020.01.30
[운영체제] CPU Scheduling(2)  (0) 2020.01.28
[운영체제] Process Management(2)  (0) 2020.01.26
[운영체제] Process Management(1)  (0) 2020.01.26
[운영체제] Process(2)  (0) 2020.01.24