본문 바로가기

Algorithm

스케쥴링 알고리즘 (FCFS, SJF, SRTF, RR)

 

1. FCFS (First Come, First Served, 선착순)

 

먼저 온 프로세스부터 순서대로 실행 (비선점)

단순한 구조, 하지만 긴 작업이 먼저 오면 전체 지연 가능성 있음 (Convoy Effect)

 

✅ 적합한 경우

  • 배치 처리 시스템 (Batch Processing System)  : 백그라운드에서 실행되는 긴 작업을 순차적으로 처리할 때
  • 프린터 대기열 (Print Queue) : 먼저 온 인쇄 작업부터 차례로 인쇄

 

2. SJF (Shortest Job First, 최단 작업 우선)

 

실행 시간이 가장 짧은 작업부터 처리 (비선점)

평균 대기 시간 최소화 (하지만 긴 작업이 계속 밀릴 가능성 있음)

 

✅ 적합한 경우

  • 단기 작업이 많은 시스템 : 빠른 응답이 필요한 환경에서 평균 대기 시간을 최소화할 때
  • 데이터베이스 쿼리 처리 : 짧은 쿼리를 먼저 처리하면 전체적인 처리 속도 개선

 

💡 예시:

  • 인터랙티브 시스템 (Interactive System): 사용자 요청에 빠르게 응답해야 하는 시스템 (예: 검색 엔진)
  • CPU 작업 스케줄링: 짧은 작업을 먼저 실행하여 평균 대기 시간 단축

 

⚠️ 주의점:

  • 실행 시간이 긴 작업은 계속 밀릴 수 있음 (기아 상태, Starvation 문제 발생 가능)

 

 

3. SRTF (Shortest Remaining Time First, 최단 잔여 시간 우선)

 

실행 시간이 가장 짧게 남은 프로세스를 우선 실행 (선점 가능)

새로운 작업이 도착할 때마다 실행 시간이 더 짧으면 선점

 

✅ 적합한 경우

  • 응답 시간이 중요한 시스템 : 실시간 처리 시스템에서 빠르게 끝나는 작업을 먼저 처리
  • CPU 작업 스케줄링 : 시스템 부하를 최적화하고 평균 대기 시간을 줄이는 데 효과적

 

💡 예시:

  • 실시간 데이터 처리 시스템: 주식 시장에서 짧은 연산을 우선 처리하여 빠른 피드백 제공
  • OS 프로세스 스케줄링: 사용자 애플리케이션 실행 시 작은 작업을 먼저 완료

 

⚠️ 주의점:

  • 문맥 전환(Context Switching)이 많아질 수 있음
  • 긴 작업이 계속 밀릴 위험 존재 (Starvation)

 

 

4. RR (Round Robin, 라운드 로빈)

 

모든 프로세스가 일정한 시간 할당량(time quantum)을 가짐

선점 가능 (일정 시간이 지나면 강제로 CPU를 넘김)

시분할 시스템에서 공정성 보장

 

✅ 적합한 경우

  • 시분할 시스템 (Time-Sharing System) : 다수의 사용자가 동시에 작업하는 환경에서 응답성을 보장해야 할 때
  • 멀티태스킹 OS : 여러 애플리케이션이 동시에 실행될 때 공정한 CPU 할당 필요

 

💡 예시:

  • 운영체제 프로세스 스케줄링: 여러 애플리케이션이 공정하게 CPU를 사용하도록 함
  • 온라인 게임 서버: 여러 플레이어의 요청을 공정하게 처리
  • 웹 서버 요청 처리: 각 요청이 특정 시간 동안 처리되도록 보장

 

⚠️ 주의점:

  • 문맥 전환이 자주 발생하면 오버헤드 증가
  • 시간 할당량이 너무 길면 FCFS처럼 작동
  • 시간 할당량이 너무 짧으면 문맥 전환이 과다하게 발생하여 성능 저하