Starvation

특정 프로세스가 자원을 영원히 할당받지 못하고 무한히 대기하는 상태입니다.

발생 원인

우선순위가 낮은 프로세스가 있는데
높은 우선순위 프로세스가 계속 들어오면
→ 낮은 우선순위 프로세스는 영원히 실행 못함

발생하는 스케줄링

알고리즘발생 이유
SJF / SRTF짧은 작업이 계속 들어와 긴 작업이 밀림
우선순위 스케줄링높은 우선순위가 계속 들어와 낮은 것이 밀림

Starvation vs Deadlock

StarvationDeadlock
원인자원 배분 불공평자원 순환 대기
실행 가능성이론상 가능 (자원 있음)불가능 (서로 대기)
해결에이징(Aging)예방/회피/탐지

해결 방법 - 에이징 (Aging)

대기 시간이 길어질수록 우선순위를 점진적으로 높임

P1 (우선순위 10, 30분 대기)
→ 에이징 적용
→ 우선순위 10 → 7 → 4 → 1
→ 결국 실행됨 O
// 에이징 개념 (의사 코드)
while (waiting) {
    waitTime++;
    if (waitTime % 10 == 0) {
        priority--;  // 숫자 낮을수록 높은 우선순위
    }
}

Starvation은 공평성(Fairness) 문제로, 에이징을 통해 오래 기다린 프로세스가 반드시 실행될 수 있도록 보장합니다.

CSLOG에서 보기