CPU 스케줄링
컴퓨터는 여러 프로그램을 동시에 실행하는 것처럼 보이지만, 실제로는 CPU 하나가 빠르게 여러 작업을 번갈아가며 처리한다. 이렇게 CPU의 사용 순서를 정해주는 것이 CPU 스케줄링
스케줄링의 기준
- 처리량 (Throughput): 단위 시간당 처리 가능한 작업 수
- 반응 시간 (Response Time): 요청 후 첫 응답까지 걸리는 시간
- 대기 시간 (Waiting Time): 준비 큐에서 기다리는 시간
- 반환 시간 (Turnaround Time): 요청부터 완료까지 걸리는 전체 시간
대표 스케줄링 알고리즘
FCFS (First-Come, First-Served
가장 먼저 도착한 프로세스부터 처리하는 방식이다. 간단하지만, Convoy Effect(호위 효과) 로 인해 짧은 작업이 오래 대기할 수 있다.
SJF (Shortest Job First)
실행 시간이 짧은 작업부터 처리한다. 평균 대기 시간이 짧지만, 실행 시간을 미리 알아야 한다는 단점이 있다.
Priority Scheduling
우선순위가 높은 작업부터 처리한다. Starvation(기아 현상) 이 생길 수 있어, 우선순위 보정이 필요하다.
Round Robin (RR)
각 프로세스에 정해진 시간만큼 CPU를 나눠주는 방식이다. 응답성이 좋아 사용자 인터페이스에 적합하다.

실시간 CPU 스케줄링
Rate-Monotonic(RM) 스케줄링
선점 가능한 정적 우선순위 정책을 이용하여 주기 태스크들을 스케줄 하는 방식이다.
- 기준 : 주기
- 각각의 주기 태스크들은 시스템에 진입하게 되면 주기에 따라서 우선순위가 정해지는데,
주기가 짧은 태스크에게는 높은 우선순위, 주기가 긴 태스크에게는 낮은 우선순위를 부여한다.
- CPU를 더 자주 필요로 하는 태스크에게 더 높은 우선순위를 주는 것이고
이 우선순위는 변화하지 않고 고정된다. (정적 우선순위 스케줄링)
Earliest-Deadline-First(EDF) 스케줄링
선점 가능한 동적 우선순위 정책을 이용하여 주기 태스크들을 스케줄 하는 방식이다.
- 기준 : 마감시간
- 마감시간까지 남은 시간이 짧은 태스크의 작업이 높은 우선순위를 가지며,
- 우선순위는 새로 실행 가능하게 된 프로세스의 마감시간에 맞춰서 동적으로 조정된다.
reference: 링크텍스트