일 | 월 | 화 | 수 | 목 | 금 | 토 |
---|---|---|---|---|---|---|
1 | 2 | 3 | 4 | 5 | 6 | 7 |
8 | 9 | 10 | 11 | 12 | 13 | 14 |
15 | 16 | 17 | 18 | 19 | 20 | 21 |
22 | 23 | 24 | 25 | 26 | 27 | 28 |
29 | 30 | 31 |
- TensorFlow Lite
- tflite
- 포스코 AI교육
- 코테 문제
- 포스코 ai 교육
- 초소형머신러닝
- 알고리즘
- 포스코 교육
- bfs문제
- DP문제
- 임베디드 딥러닝
- 삼성역량테스트
- 영상처리
- BFS
- 컴퓨팅사고
- DP
- MCU 딥러닝
- 코딩테스트
- dfs문제
- dfs
- 코테
- 자료구조
- sort
- 딥러닝
- 삼성역테
- 다이나믹프로그래밍
- 그리디
- 삼성코딩테스트
- 삼성코테
- tinyml
- Today
- Total
코딩뚠뚠
[OS 공부] CPU 스케줄러 본문
CPU 스케줄러란
다중 프로그램 OS의 기본으로 여러 프로세스들이 CPU를 교환하며 사용하기 위해 필요한 스케줄러이다.
스케줄링 대상은 Ready Queue에 있는 프로세스들이다.
이에 대한 이해는 이전 포스팅을 참고
dbstndi6316.tistory.com/176?category=957343
스케줄링이 일어나는 시점
- 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 |