코딩뚠뚠

[OS 공부] CPU 스케줄러 본문

공부/OS 공부

[OS 공부] CPU 스케줄러

로디네로 2021. 1. 13. 00:27
반응형

 

CPU 스케줄러란

 

다중 프로그램 OS의 기본으로 여러 프로세스들이 CPU를 교환하며 사용하기 위해 필요한 스케줄러이다.

 

스케줄링 대상은 Ready Queue에 있는 프로세스들이다.

 

이에 대한 이해는 이전 포스팅을 참고

dbstndi6316.tistory.com/176?category=957343

 

[OS 공부] 스케줄러

스케줄러란 프로세스들은 자신이 죽을때까지 수많은 큐들을 돌아다닌다. OS는 이 큐 안에 있는 프로세스 중에 하나를 선택해야 한다. 이런일을 스케줄러가 하는 것이다. 즉,프로세스들 중에 무

dbstndi6316.tistory.com


스케줄링이 일어나는 시점

- Running -> Waiting (I/O, 자식프로세스종료)

- Running -> Terminate (부모프로세스 종료)

- Running -> Ready (인터럽트 발생)

- Waiting -> Ready (I/O완료)


비선점 스케줄링 / 선점 스케줄링

비선점 스케줄링 :

- Time-Slice가 없다.

- CPU를 사용중인 프로세스가 자율적으로 반납하는 방식

 

선점 스케줄링 : 

- 우선순위에 따라 CPU를 선점하는 방식

- OS가 알고리즘에 따라 프로세스에게 CPU를 할당하고 필요하면 회수

 


스케줄링 알고리즘

FCFS (First Come First Served)

- 먼저 온 순서대로 처리한다. 마치 Queue와 같다. (FIFO)

- 비선점형 스케줄링이다. 프로세스가 완료될때까지 CPU반환 X

-->문제점 : convoy effecy (소요시간이 긴 프로세스가 먼저 실행되어 효율성이 낮아지는 현상 발생)

 

SJF (Shortest -Job -First)

- 다른 프로세스가 먼저 도착했어도 실행시간이 짧은 프로세스에게 먼저 할당해준다.

- 비선점형 스케줄링

-->문제점 : starvation (특정 프로세스가 지나치게 차별받는다. 소요시간이 길면 언제 할당받을지 모른다.)

 

SRT (Shortest Remaining time First)

- 새로운 프로세스가 도착할 때마다 새로운 스케줄링이 이루어진다.

- 선점형 스케줄링이다. 현재 수행중인 프로세스의 남은 실행시간보다 더 짧은 실행시간을 가지는 새 프로세스가 도차가면 CPU를 반환해야한다.

-->문제점 : starvation (변수가 많기때문에 실행시간을 측정할 수 없다.)

 

Priority Scheduling

- 우선순위가 가장 높은 프로세스에게 CPU를 할당한다. 작은 숫자일수록 우선순위 높다.

- 선점형 스케줄링 방식 (우선순위를 따진다는 것)

- 비선점형 스케줄링 방식 (우선순위를 따져서 이미 수행되고 있는것이 자율적으로 CPU를 반납)

--> 문제점 : starvation (언제 CPU를 할당받을지 모른다.)

--> 해결책 : aging (오래 기다리면 우선순위를 점점 높여주자.)

 

Round Robin

- 각 프로세스는 동일한 크기의 할당시간을 갖게된다.

- 할당시간이 지나면 프로세스는 다른 프로세스에게 선점당하고 ready queue의 제일 뒤로 가게된다.

-->장점 : CPU 시간이 랜덤한 프로세스들이 섞여있을때 효율적이다

/ Response time이 빨라진다. (어떤 프로세스도 일정시간 이상 기다리지 않는다.)

/ 프로세스가 기다리는 시간이 CPU를 사용할 만큼 증가한다. = 공정한 스케줄링

--> 주의점 : 설정한 time 간격이 너무 커지면 FCFS와 같아지고 너무 작아지면 overhead가 발생할 것이다.

 

 

반응형

'공부 > OS 공부' 카테고리의 다른 글

[OS 공부] 프로세스 동기화  (0) 2021.01.27
[OS 공부] 동기&비동기  (0) 2021.01.17
[OS 공부] 스케줄러  (0) 2021.01.10
[OS 공부] 멀티스레드 & 멀티프로세스  (0) 2021.01.09
[OS 공부] 프로세스와 스레드  (0) 2021.01.09