선점형 스케줄링

실행 중인 프로세스에서 강제로 CPU를 빼앗아 다른 프로세스에게 할당할 수 있는 스케줄링 방식입니다.

비선점 vs 선점

[비선점]
프로세스 실행 중 → 끝날 때까지 CPU 점유
→ 중간에 빼앗기 불가

[선점]
프로세스 실행 중 → 조건 충족 시 CPU 강제 회수
→ 다른 프로세스에게 할당

선점이 발생하는 시점

1. 타이머 인터럽트 (Time Quantum 만료)
2. 더 높은 우선순위 프로세스 등장
3. I/O 완료로 대기 중인 프로세스가 준비 상태로 전환

주요 알고리즘

RR (Round Robin)

Time Quantum(시간 할당량)마다 프로세스 교체

P1 → P2 → P3 → P1 → P2 → P3 ...
[2ms] [2ms] [2ms] [2ms]

Time Quantum이 너무 크면 → FCFS와 같아짐
Time Quantum이 너무 작면 → 문맥 교환 비용 증가

SRTF (Shortest Remaining Time First)

남은 실행 시간이 더 짧은 프로세스가 오면 CPU 빼앗김

P1 실행 중(남은 시간 10ms)
→ P2 도착(실행 시간 3ms)
→ P2가 CPU 선점

우선순위 스케줄링 (Priority)

더 높은 우선순위 프로세스 도착 시 CPU 선점

P1(우선순위 3) 실행 중
→ P2(우선순위 1) 도착  ← 숫자 낮을수록 높은 우선순위
→ P2가 CPU 선점

장단점

장점단점
응답성 향상문맥 교환(Context Switch) 비용 발생
실시간 처리 가능기아(Starvation) 발생 가능
CPU 효율 향상구현 복잡

기아(Starvation) 해결 - 에이징(Aging)

오래 기다린 프로세스의 우선순위를 점진적으로 높임
→ 언젠가는 반드시 실행됨을 보장

현대 OS(Linux, Windows)는 선점형 스케줄링을 기본으로 사용하며, Round Robin + 우선순위를 결합한 방식으로 응답성과 공정성을 동시에 확보합니다.

CSLOG에서 보기