CPU 스케줄링?
- OS가 프로세스들에게 CPU 자원을 분배하는 것
프로세스 우선순위
- 사용자가 직접 설정하거나, OS 기본값으로 설정되어 있음
- ex. 입출력 집중 프로세스 > CPU 집중 프로세스
스케줄링 큐

- Ready Queue (준비큐)
- Blocked Queue (대기큐)
- 입출력장치를 이용하기 위해 기다리는 줄
- 같은 장치를 요구한 프로세스들은 같은 큐에서 대기
선점형, 비선점형 프로세스 스케줄링
- 프로세스 A: 저.. 너무 급한데 CPU좀 쓰면 안될까요?ˀ
- Preemptive Scheduling (선점형 스케줄링)
- OS: 지금 CPU 사용 중인 프로세스 B거 뺏어왔어요 쓰세요
- 장점 - 한 프로세스의 자원 독점을 막고 프로세스들에 고루 자원 배분
- 단점 - 컨텍스트 스위칭 과정에서 오버헤드 발생
- Non-preemptive Scheduling (비선점형 스케줄링)
CPU 스케줄링 알고리즘
FCFS/FIFO - 선입 선처리 스케줄링
- 레디큐에 삽입된 순서대로 처리
- 비선점형 스케줄링
- 문제점) 프로세스들이 기다리는 시간이 매우 길어질 수 있음 (=
convoy effect 호위 효과)
SJF - 최단 작업 우선 스케줄링
RR - Round Robin 스케줄링
- FCFS + 타임 슬라이스 (각 프로세스가 CPU를 사용할 수 있는 정해진 시간)
- 즉 일단 큐에 삽입된 순서대로 CPU 이용하되, 정해진 시간만큼만 이용
- 정해진 시간을 모두 사용하였음에도 아직 프로세스 완료되지 않았다면 다시 큐의 맨 뒤에 삽입 (컨텍스트 스위칭)
- 선점형 스케줄링
SRT - 최소 잔여 시간 우선 스케줄링
- SJF + RR
- 즉 정해진 시간만큼 CPU를 이용하되, 다음으로 CPU를 사용할 프로세스로는 남은 작업 시간이 가장 적은 프로세스 선택
- 우선순위 스케줄링
- 우선순위가 같은 프로세스들은 FCFS로 스케줄링
- SJF, SRT ⊂ 우선 순위 스케줄링
- 문제점) starvation (우선순위가 낮은 프로세스는 끝끝내 실행되지 않을수도…)
- 해결방법) aging - 오랫동안 대기한 프로세스의 우선순위를 점차 높이기