[개발일지]/필기

CPU Scheduling

broship 2021. 8. 15. 14:10

- 프로그램 실행중에는 CPU 작업만 실행하는 CPU brust와 I/O 작업을 수행하는 I/O brust 작업이 번갈아 가면서 실행된다

- 프로그램 종류에 따라 CPU brust와 I/O brust가 빈번하게 일어나는 경우가 있고 CPU brust만 계속 하다가 가끔씩만 I/O brust가 일어나는 경우가 있음

- 일반 사용자가 사용하는 프로그램은 대부분 CPU brust와 I/O brust가 자주 번갈아가면서 실행됨

- 과학 계산용 프로그램은 I/O brust는 거의 없고 CPU brust만 오래 사용함

 

- x축은CPU brust의 길이(크면 클수록 CPU brust 시간이 김) y축은 빈도

- CPU 사용량을 관찰한 결과 I/O brust가 빈번하게 일어나는 작업이 대다수고 CPU brust가 긴 작업은 별로 없다는걸 발견함

- I/O 작업의 경우 단지 CPU를 여러번 사용하므로 빈도가 높은거지 꼭 I/O 작업이 CPU를 많이 사용하고 CPU brust가 CPU를 적게 사용하는 것은 아님

 

- I/O brust의 경우 사용자가 사용할때가 많으므로 CPU brust만 하는 작업에 타이머를 두지 않고 주구장창 쓰게 하면 사용자가 프로그램을 사용하는데 있어 답답함을 느낄 수 있음

- 그래서 CPU는 무조건 공평하게 나누는것 보단 사용자가 자주 사용하는 프로그램에 먼저 우선권을 주는것이 더 효율적임

 

- I/O bound process: I/O 작업이 빈번하게 일어나는 프로세스

- CPU bound process: I/O 작업이 거의 없고 CPU 작업만 길게 있는 프로세스

 

- CPU Scheduler: ready 상태의 프로세스 중 이번에 CPU를 줄 프로세스를 선택함

- Dispatcher: CPU제어권을 CPU 스케줄러가 선택한 프로세스에게 넘기는 역할(문맥 교환)을 담당

- 위 2개는 OS안에서 동작하는 기능(소프트웨어)

 

- CPU 스케줄링이 필요할때

1. running -> blocked(I/O 작업이 필요할때)

2. running -> ready(타이머 시간이 끝날을때)

3. blocked -> ready(I/O작업이 끝나고 다시 CPU를 사용해야 할때)

4. terminate

 

- 4는 강제로 빼았는 경우(preemtive)

- 1~3은 자진 반납(nonpreemptive)

- CPU 스케줄링 알고리즘도 preemtive(선점형), nonpreemtive(비섬점형)으로 나뉠 수 있음

'[개발일지] > 필기' 카테고리의 다른 글

Process Synchronization1 - lock and unlock  (0) 2021.08.22
CPU Scheduling Algorithms  (0) 2021.08.16
Process Management  (0) 2021.08.12
Process2 - 스레드  (0) 2021.08.10
Process1  (0) 2021.08.03