본문 바로가기
공부/OS 공부

[OS 공부] CPU 스케줄러

by 로디네로 2021. 1. 13.
반응형

 

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

댓글