운영체제 - CPU 스케쥴링(1)
CPU 스케쥴링이란?
- 어떤 프로세스에게 CPU를 할당할 것인가?
- CPU를 할당받은 프로세스에게 얼마만큼의 CPU Time을 제공할 것인가?
이 두가지에 대한 고민이 CPU 스케쥴링(scheduling)이다.
1. preemptible resource
- 한 프로세스가 점유한 상태에서 다른 프로세스에게 양보할 수 있는 자원.
ex. CPU, main memory(swapping)
2. non-preemptible resource
- 한 프로세스가 점유하면 사용을 마칠 때까지 다른 프로세스에게 양보할 수 없는 자원
ex. 프린터(Printer)
CPU 스케쥴링을 지원하기 위해 CPU Burst라는 단위를 만들었다.
# CPU Burst
- 프로그램의 수행 중에 연속적으로 CPU를 사용하는 단절된 구간.
CPU 스케쥴러는 한개의 CPU Burst가 수행을 완료 했을 때마다 다음으로 CPU를 할당받을 프로세스를 결정함.
즉, CPU Burst가 종료될 때마다 CPU 스케쥴러가 실행된다.
# I/O Burst
- 프로그램 수행중에 I/O blocking operation의 완료를 기다리며 블록(block)되는 구간.
Q. Job과 Process의 차이는?
- Batch monitor에서의 Job은 한번 수행이 시작되면 그 수행이 완료될 때까지 계속 수행되던 작업이었다.
CPU Burst Size가 큰 앱
- cpu 연산을 많이 요구하는 앱, 과학기술 계산
CPU Burst Size가 작은 앱
- touch screen 처리 앱, I/O interactive 앱
< Process State Transition Diagram >
1) Running -> Ready
- H/W interrupt가 발생하면 kernel mode로 전환되고 CPU Scheduler가 CPU를 빼앗는다. (preemptive scheduling)
2) Running -> Waiting
- CPU yield 함수를 호출하는 경우.(non-preemptive scheduling)
3) Waiting -> Ready
- I/O blocking operation이 완료되었는 Interrupt(Asynchronous)가 발생한 경우이다. (preemptive scheduling)
'운영체제 > CPU 스케쥴링(scheduling)' 카테고리의 다른 글
운영체제 - CPU 스케쥴링(3) (0) | 2019.03.19 |
---|---|
운영체제 - CPU 스케쥴링(2) (0) | 2019.03.16 |