CPU 스케줄링

여러 프로세스가 CPU를 사용하려 할 때, 어떤 프로세스에게 CPU를 할당할지 결정하는 OS의 관리 기법입니다.

왜 필요한가?

CPU는 한 번에 하나의 프로세스만 실행 가능
→ 여러 프로세스가 CPU를 요청할 때 순서를 결정해야 함
→ CPU 효율 극대화 + 공정한 자원 배분

스케줄링 기준 지표

지표설명방향
CPU 이용률CPU가 일하는 비율높을수록 좋음
처리량 (Throughput)단위 시간당 완료된 프로세스 수높을수록 좋음
대기 시간프로세스가 준비 큐에서 기다린 시간낮을수록 좋음
반환 시간프로세스 시작 ~ 완료까지 총 시간낮을수록 좋음
응답 시간요청 후 첫 응답까지 시간낮을수록 좋음

스케줄링 알고리즘

비선점형 스케줄링(Non-Preemptive) - 실행 중 CPU 빼앗기 불가

알고리즘설명단점
FCFS먼저 온 순서대로 처리긴 작업이 앞에 오면 전체 대기 증가
SJF실행 시간 짧은 것 먼저긴 작업 기아(Starvation) 발생

선점형 스케줄링 (Preemptive) - 실행 중 CPU 빼앗기 가능

알고리즘설명단점
Round Robin시간 할당량(Time Quantum)마다 교체Time Quantum 설정이 중요
SRTF남은 시간 가장 짧은 것 먼저기아 발생 가능
Priority우선순위 높은 것 먼저기아 발생 가능
MLQ여러 우선순위 큐로 분리큐 간 이동 불가
MLFQMLQ + 큐 간 이동 가능구현 복잡

핵심 알고리즘 비교

FCFS:  P1(24ms) → P2(3ms) → P3(3ms)  평균 대기: 17ms
SJF:   P2(3ms)  → P3(3ms) → P1(24ms) 평균 대기: 3ms  ← 최적
RR:    P1(2ms)  → P2(2ms) → P3(2ms) → P1(2ms) ...   응답성 좋음

선점 vs 비선점

선점비선점
CPU 강제 회수OX
응답성좋음나쁠 수 있음
문맥 교환 비용높음낮음
실시간 시스템적합부적합

현대 OS는 대부분 선점형 스케줄링을 사용하며, 특히 Round Robin 기반에 우선순위를 결합한 방식을 채택합니다.

CSLOG에서 보기