💻 [운영체제] CPU 스케줄링 알고리즘 정리 (FCFS, SJF, Priority, RR)
2025. 4. 24. 20:50

📌 CPU 스케줄링이란?

  • CPU가 어떤 프로세스를 먼저 실행할지를 결정하는 운영체제의 핵심 기능
  • 프로세스가 실행되기 위해서는 CPU를 점유해야 함
  • 모든 프로세스가 동시에 실행될 수 없기 때문에, 공정하고 효율적인 스케줄링 방식이 필요함

1️⃣ FCFS (First-Come, First-Served)

✅ 정의

  • 먼저 도착한 프로세스부터 순차적으로 CPU를 할당

🔍 특징

  • 간단하고 직관적
  • 큐(Queue) 구조로 구현

📉 단점

  • Convoy Effect 발생 가능
    → 긴 작업이 먼저 오면 뒤의 짧은 작업들이 오랫동안 대기하게 됨

💡 예시

프로세스 도착 시간 실행 시간
P1 0 10
P2 1 2
P3 2 1

→ 실행 순서: P1 → P2 → P3
→ 평균 대기 시간 증가


2️⃣ SJF (Shortest Job First)

✅ 정의

  • 실행 시간이 가장 짧은 프로세스를 먼저 실행

🔍 특징

  • 이론상 가장 효율적인 스케줄링 (평균 대기 시간 최소화)
  • 선점형(Preemptive) or 비선점형(Non-preemptive) 가능

📉 단점

  • 실행 시간을 미리 예측해야 함 (실제 시스템에서는 어려움)
  • 짧은 작업 위주로 돌아가면서 긴 작업이 계속 밀릴 수도 있음 (Starvation)

3️⃣ Priority Scheduling

✅ 정의

  • 각 프로세스에 우선순위(Priority) 부여 → 높은 순위부터 실행

🔍 특징

  • 우선순위는 숫자가 낮을수록 높다고 가정
  • 비선점형, 선점형 모두 가능

📉 단점

  • 낮은 우선순위는 계속 밀림 → Starvation
  • 이를 방지하려면 Aging 기법 적용 필요
    → 대기 시간이 길어질수록 우선순위 자동 상승

4️⃣ RR (Round Robin)

✅ 정의

  • 각 프로세스에 동일한 시간(Time Quantum)을 할당해 돌아가며 실행

🔍 특징

  • 선점형 방식, 공정함
  • 짧은 시간 단위로 컨텍스트 스위칭이 자주 발생함

📉 단점

  • 타임 슬라이스가 너무 크면 FCFS와 비슷해짐
  • 너무 작으면 오버헤드 증가 (스위칭 비용)

💡 예시

  • Quantum = 2ms
  • P1(5), P2(4), P3(2)
    → 순서: P1(2) → P2(2) → P3(2) → P1(3) → P2(2)

⚖️ 각 알고리즘 비교 요약

알고리즘 선점 여부 장점 단점
FCFS 구현 쉬움 Convoy 현상
SJF ⭕/❌ 평균 대기시간 최소 Starvation, 예측 어려움
Priority ⭕/❌ 유연한 우선순위 지정 Starvation 가능
RR 공정성 보장 컨텍스트 스위칭 오버헤드

✍️ 회고

  • CPU 스케줄링은 단순한 알고리즘 선택이 아닌, 시스템 특성과 목적에 따라 달라지는 전략
  • “가장 효율적”인 알고리즘은 상황에 따라 다르며,
    선점형/비선점형의 차이도 매우 중요
  • 실제 운영체제는 이 알고리즘들을 적절히 조합해서 사용함