오래 못 할 짓 하지 않기

[ 운영체제 ] 10. CPU Scheduling 본문

3학년 1학기/운영체제 (OS)

[ 운영체제 ] 10. CPU Scheduling

쫑알bot 2024. 4. 9. 10:18
728x90

CPU Scheduling

 

목적 : CPU 활용도를 최대로 하기 위해 ( 멀티 프로그래밍 / 멀티 태스킹을 사용함 )

 

 


● CPU-IO Burst Cycle

 

: burst = " 열심히 일한다 " 정도로 생각하면 된다.

 

Load , add , read를 할 땐 CPU Burst Time 이고

 

I/O가 일을 할 때, 즉 CPU가 I/O 작업이 끝나기를 기다릴 때는
(I/O 기준) I/O Burst = (CPU 기준) I/O wait 라고 한다.

 

(주로) CPU Burst 뒤에는 I/O Burst가 따라온다

 

- I/O bound process = 짧고 많은 개수의 burst로 이루어져 있음

- CPU bound process = 적은 수의  burst로 이루어져 있음

 

I/O bound process가 많고

CPU bound process가 적다.

 


● CPU Scheduler

: Ready queue에 있는 프로세스에게 CPU를 할당해준다.

 

▶ 다음 Process로 어떤 걸 선택해야하나? 

 - Ready queue를 구현하는 방법은 다양하다.  ( FIFO , Priority , Tree , Linked list )

 - 각각의 Process는 PCB로 나타낸

.

 

▶ 언제 Scheduling 이 일어나는가?

 

 

1. Running → Waiting

2. Running → Ready

3. Waiting  → Ready

4 . Terminates 

(4번빼고는 R로 시작하는 게 1개 이상 있어야 함)

 

 

 

● 선점형 vs 비선점형

 

- 비선점형(Non- preemptive) : 자발적으로 나온다.

  > 자발적으로 나오기(Release) 전까지는 쓰게 냅둔다.  

  > Terminate , Waiting으로 전환할 때에 해당한다.

     (동전 노래방이라고 생각하면 쉬움)

      하다가, Process: 나 이제 끝낼래 /  나 지금 나가서 기다려야함, 시간 남았는데 너 쓰셈           

 

  * Interrupt 를 받지 않는다. 

 


- 선점형(Preemptive) : 쫓겨나는 느낌이다.

   > 시간 다 되어서 나온다 OR 직원(CPU Interrupt) 이 온다.

 

* H/W의 Supportshared data 의 handling이 필요하다.

 (시간되면 꺼지기)

 

 * 선점형 Scheduling은 공유 자원에 대해 프로세스 순서 등이 결과값에 영향을 줄 수 있는 Race conditions을 초래한다.

 

 

 

 

● Dispatcher

: Ready queue에 있는 Process가  CPU를 사용할 수 있게 해주는 Module

   = Context Switch를 해주는 모듈

 

- 역할

1) Context Switch

2) User mode로 전환

3) 새로운 Process,Program으로 Jump

 

 

 

 

 

Dispatch Latency 

: 하나의 프로세스에서 다음 프로세스로 넘어가는 시간

  = P0 ▶ P1 로 넘어가는 시간

 

가능한 짧아야 한다.

 

 

 

 

 

 

 

 


 

Scheduling의 성능 판단 기준

 

CPU 활용도 : 가능한 CPU를 바쁜 상태로 사용하기

Throughput ( 처리량 ) : 기준 시간 안에 몇 개의 일 을 하는지

 Trunaround time : 프로세스가 작업(실행~종료) 하나 끝내는 데에 걸리는 시간.

 대기시간 : Ready queue에 있는 프로세스가 Ready queue에서 기다리는 시간의 총합.

 응답시간 : 요청 받았을 때부터, 응답할 떄까지 걸리는 시간.

 

 

(출처)

한동대학교 고윤민교수님 - 운영체제