CPU 스케줄링
- 운영체제가 Ready Queue에 있는 프로세스들에게 CPU 자원을 할당하는 것
- CPU 스케줄링 알고리즘에 따라 프로세스에서 해야 하는 일을 스레드 단위로 CPU에 할당함
선점 스케줄링
- 다른 프로세스가 CPU를 사용 중이더라도, 운영체제가 프로세스로부터 자원을 빼앗아 다른 프로세스에 할당하는 방식
- 우선순위가 높은 프로세스를 빠르게 처리할 수 있다.
라운드 로빈
,SRT
,멀티 큐
,멀티 피드백 큐
- 컨텍스트 스위칭이 자주 일어나 오버헤드가 발생하여 성능 저하의 우려가 있다.
문맥교환 (Context Switching)
CPU가 어떤 하나의 프로세스를 실행하고 있는 상태에서 인터럽트 요청에 의해 다음 우선 순위의 프로세스가 실행되어야 할 때, 기존 프로세스의 상태 또는 레지스터 값(Context)을 저장하고 CPU가 다음 프로세스를 수행하도록 새로운 프로세스의 상태 또는 레지스터 값(Context)을 교체하는 작업
비선점 스케줄링
- 프로세스가 종료되거나 대기 상태에 접어든 후 CPU에 할당된 프로세스를 교체하는 방식
- 모든 프로세스를 공정하게 처리
SJF
,FCFS
등
FCFS 스케줄링 - 비선점
- 준비 큐에 먼저 도착한 프로세스를 CPU에 할당하는 프로세스로 선택하는 스케줄링 알고리즘
- CPU 사용 시간이 짧은 프로세스들이 긴 시간을 기다려야하는
호위 효과
가 발생- 평균 대기 시간 증가, CPU와 장치 이용률 저하
SJF 스케줄링 - 비선점
- CPU 사용 시간에 따라 우선순위를 부여하여 프로세스를 선택하는 스케줄링 알고리즘
- 평균 대기 시간을 줄일 수 있어, 평균 대기 시간을 최소화 할 수 있음
기아 현상
이 발생할 수 있다.- CPU 사용 시간이 긴 프로세스가 우선순위에서 계속 밀려나 CPU 할당 기회를 받지 못하게 되는 현상
- SRT 알고리즘 - 최소 잔여 시간 우선
- SJF + RR 방식을 혼합한 선점 스케줄링 방식
프로세스는 time slice 만큼 CPU를 사용하고, 잔여 시간이 짧은 순으로 우선 순위를 매김
라운드 로빈(RR) 스케줄링 - 선점
- FCFS 방식에
time slice
개념을 추가한 방식 - 선입 선처리 방식으로 프로세스를 CPU에 할당하고,
time slice
가 지나면 다시 준비 큐에 삽입 (타이머) time slice
가 크면 FCFS와 동일하게 호위 효과가 발생할 수 있다.time slice
가 작으면 Context Switching으로 오버헤드가 발생할 수 있다.
우선 순위 스케줄링 - 선점
- 프로세스에 우선순위를 부여하여 이에 따라 할당하는 방식
- SRT, SJF는 우선순위 스케줄링으로 분류할 수 있음
- 문제점:
기아현상
- 해결방법:
에이징
- 오래 대기한 프로세스의 우선순위를 점차 상승시켜 기아 현상을 제거
멀티 큐 스케줄링 - 선점
- 다수의 별도의 큐로 분류하여 각 큐마다 제 각각의 스케쥴링 알고리즘을 적용하는 방법입니다.
- 각 큐는 각각의 스케줄링 알고리즘을 가질 수 있음
- 프로세스 유형별로 우선순위를 구분하여 실행하는 것에 유리함
- 프로세스는 포어그라운드(대화형) 프로세스와 백그라운드(일괄처리) 프로세스로 구분
- 포어그라운드 프로세스 : 응답 시간 짧게 하기 위해 Round Robin 방식 사용
- 백그라운드 프로세스 : 계산 위주의 작업을 하며 응답 시간이 큰 의미 없어서 FCFS 사용
- 보통 CPU 시간의 80%는 Foreground의 RR, 20%는 Background의 FCFS에 할당된다.
기아 현상
이 동일하게 발생할 수 있음
멀티 레벨 큐 스케줄링 - 선점
- 다단계 큐에서 자신에게 할당된
time slice
을 다 사용한 프로세스는 밑으로 내려가고time slice
을 다 채우지 못한 프로세스는 원래 큐 위치 그대로 둔다. - 짧은 작업에 유리하며 입출력 위주의 작업에 우선권을 준다.
- 처리 시간이 짧은 프로세스를 먼저 처리하기 때문에 Turnaround 평균 시간을 줄여준다.
기아 현상
의 해결방안인에이징
구현 가능하다.- 특정 시스템에 부합하도록 구성이 가능함으로 현대 사용되는 CPU 스케줄링 알고리즘 중 가장 일반적인 CPU 스케줄링 알고리즘이다.