CPU 스케줄링 5가지

FCFS

비선점형

가장 기본적으로 먼저 온 순서대로 프로세스를 실행합니다.

  • 간단하지만, 대기 시간이 길어질 수 있습니다.
    왜냐하면, 나중에 온 프로세스가 먼저 처리되면 더 효율적인 경우도 있는데 해당 방식은 무조건적으로 먼저 온 프로세스를 처리하기 때문입니다.

SJF

비선점형

작업 시간이 짧은 것부터 먼저 실행합니다.

  • CPU 작업 시간이 가장 짧은 프로세스를 우선 실행합니다.
  • 이론적으로 평균 대기 시간이 가장 짧습니다. 하지만 실제로 작업 시간이 정확히 얼만지 예측이 어렵습니다.

SRTF

선점형

새로운 작업이 들어왔을시, 남은 작업 시간을 계산하여 짧은 것부터 먼저 실행합니다. SJF의 선점형 버전이라고 생각하면 쉽습니다.

  • 실행 중이던 프로세스보다 더 짧은 남은 시간을 가진 프로세스가 도착하면, 실행 중인 프로세스를 중단하고 새 프로세스를 실행합니다.
  • SJF는 선점이 없지만, SRTF는 실시간으로 남은 시간 비교를 통해 CPU를 넘긴다는 차이가 있습니다. 이로인해 기아 가능성이 있습니다.

Round Robin

선점형

순환하며 공평하게 정해진 시간까지 실행합니다.

  • 시간 할당량(Time Quantum) 을 정하고, 각 프로세스에게 일정 시간만큼 CPU 할당합니다.
  • 인터랙티브 시스템에 적합합니다.
  • 시간 할당량 이후 다른 프로세스로 Context Switching을 하는데, 해당 과정이 자주 발생하면 처리시간이 느려집니다.

Multilevel Queue Scheduling

선점형

프로세스 성격에 따라 여러 스케줄링 방식을 적합하게 사용합니다.

  • 시스템, 사용자, 백업 등 유형에 따라 큐를 나누고 각 큐마다 스케줄 방식을 다르게 적용합니다.
    예: 상위 큐는 Round Robin, 하위 큐는 FCFS

알고리즘장점단점적합한 환경
FCFS간단함대기 시간 길 수 있음순차적 작업 처리
SJF평균 대기시간 최소실행시간 예측 어려움배치 처리 시스템
SRTF남은 작업시간 최소기아 가능성 있음배치 처리 시스템
Round Robin공정한 처리많은 컨텍스트 스위칭사용자 시스템
MLQ유연하고 효율적복잡함분류된 작업 환경
profile
모든걸 기록하며 성장하고 싶은 개발자입니다. 현재 크래프톤 정글 8기를 수료하고 구직활동 중입니다.

0개의 댓글