본문 바로가기

운영체제/CPU 스케쥴링(scheduling)

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

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


CPU 스케쥴링이란?

  1. 어떤 프로세스에게 CPU를 할당할 것인가?
  2. 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