Notice
Recent Posts
Recent Comments
Link
일 | 월 | 화 | 수 | 목 | 금 | 토 |
---|---|---|---|---|---|---|
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 |
Tags
- 17503
- 점수 따먹기
- 구간합
- 구현
- 맥주 축제
- 세그먼트 트리
- golang
- 정렬
- 최소신장트리
- 백준
- NCP
- redis
- 시뮬레이션
- 민준이와 마산 그리고 건우
- 11659
- c++
- 21921
- dfs
- 이분 탐색
- Naver Cloud
- BOJ
- mongodb
- mst
- 16985
- 크루스칼
- SWEA
- 누적합
- gorilla/mux
- 다익스트라
- DP
Archives
- Today
- Total
Gi-Log
CPU 스케줄링 본문
CPU 스케줄링이란?
레디 큐 내의 프로세스 중에서, 어떤 녀석에게 CPU를 할당할 것인지 결정하는 것 혹은 그 방식(Policy)
CPU 스케줄링에서 고려될 수 있는 것들
- CPU Utilization(CPU 이용률)
- Throughput - 얼마나 많은 프로세스를 처리할 수 있는가
- Turnaround Time(반환 시간) - 프로세스가 도착한 시점부터 해당 프로세스가 완료될 때까지 걸리는 시간
- Waiting Time(대기 시간)- 어떤 프로세스가 레디 큐에서 대기하는 시간의 총 합
CPU 스케줄링 방식
FCFS
- 먼저 CPU를 요청한 프로세스(= 먼저 온 프로세스)에게 CPU를 할당한다.
- FIFO Queue를 이용한 간단한 구현 가능
- 프로세스가 도착한 순서 혹은 CPU를 요청한 순서에 따라서 Average Waiting Time이 달라진다.(Average Turnaround Time은 변함 없다.)
- 앞선 프로세스의 CPU Burst time이 너무 길 경우, 다른 프로세스들이 CPU를 할당 받지 못한 채 장시간 대기하게 되는 Convoy Effect가 발생할 수 있다.
- 한 번 할당된 CPU는 해당 프로세스의 CPU Burst time 동안 다른 프로세스가 선점할 수 없는, 비선점형 스케줄링 방식이다.
SJF(Shortest-Job-First)
- CPU burst time이 적은 프로세스부터 처리한다.(일종의 priority 스케줄링)
- 동일한 CPU burst time의 프로세스가 여러개 있다면 FCFS 순서 적용
- 선점형, 비선점형 스케줄링 방식 모두 가능
- average waiting time 측면에서는 최적이라고 할 수 있으나, 어떤 프로세스의 CPU burst time을 미리 알 수 없기에 SRTF의 등장
- Starvation 문제 발생 가능 - CPU burst time이 긴 프로세스는 영원히 선택받지 못하는 일이 발생 가능하다.
SRTF(Shortest-Remaining-Time-First)
- 선점형 스케줄링 방식
- 어떤 프로세스의 지난 CPU burst time의 기하 평균을 이용하여 다음 CPU burst time을 예측
- Starvation 문제 발생 가능
RR(Round-Robin)
- 할당 시간(time quantum)이 도입된 선점형 FCFS라고 할 수 있다.
- 어떤 프로세스가 레디 큐에서 나와서 할당 시간 동안 CPU를 사용하고 나면, 다시 레디 큐의 뒤로 들어가서 다음 CPU 할당을 대기하게 된다.
- 각 프로세스는 CPU 사용 시간만큼 대기 시간이 증가하게 되므로 공평한 스케줄링 방법이라고 할 수 있다.
- 할당 시간이 너무 길어진다면 FCFS와 동일하게 되어 Convoy Effect 등이 발생할 수 있고, 할당 시간이 너무 짧다면 해당 시간 동안 instruction 하나 조차 수행하지 못하는 등의 일이 발생할 수 있고 잦은 context switch로 인한 오버 헤드 발생 가능성이 있다. --> 할당 시간의 길이에 의해 성능이 크게 좌지우지되므로 합리적인 선택이 필요하다.
Priority 스케줄링
- 레디 큐 내의 프로세스 별로 우선 순위를 부여한다.
- 우선순위는 정수로 표현되며, 숫자가 작을수록 우선순위는 높다.
- 우선순위가 높은 프로세스가 레디 큐에서 선택되고 CPU를 사용하게 된다.
- 선점형, 비선점형 모두 가능
- 우선순위가 낮은 프로세스는 영영 선택되지 못하는 Starvation 문제 발생 가능(Indefinite blocking)
- Starvation 해결을 위해, Aging 기법을 통해 오래 기다린 프로세스의 우선순위는 점차 증가된다.
- 일반적으로 RR과 함께 이용된다. Priority based 스케줄링 방식을 이용하되 동일한 우선 순위의 프로세스에 대해서는 Time Quantum을 적용하여 Context Switching을 해가며 프로세스 처리
'OS Studying' 카테고리의 다른 글
OS와 관련 기본 용어 (0) | 2021.08.22 |
---|
Comments