운영체제

CPU 스케줄링

Younghun 2024. 2. 5. 12:54

1. 개념

  • CPU에 할당할 프로세스를 선택하는 알고리즘
  • 비선점형: 프로세스에게서 CPU 할당을 뺏을 수 없는 방식
  • 선점형: 프로세스에게서 CPU 할당을 뺏을 수 있는 방식
  • 발생상황 (프로세스 상태 변화)
    1. 실행 -> 대기: I/O 발생
    2. 실행 -> 준비: 타임아웃 발생
    3. 대기 -> 준비: I/O 종료
    4. 종료

2. 스케줄링 종류

FCFS 스케줄링

  • 가장 간단한 CPU 스케줄링 알고리즘으로 먼저 요청이 들어온 프로세스를 먼저 처리하는 방식
  • 간단하고 이해하기 쉽지만, 짧은 작업이 긴 작업 뒤에 대기하게 되는 'Convoy Effect'라는 문제가 발생할 수 있다.

SJF (Shortest Job First) 스케줄링

  • 실행 시간이 가장 짧은 작업부터 처리하는 방식
  • 평균 대기 시간을 최소화하는 것을 목표로 한다.
  • 하지만, 실행 시간을 미리 알 수 없는 실제 시스템에서는 이를 예측하기 어려울 수 있다.

RR (Round Robin) 스케줄링

  • 각 프로세스에게 동일한 시간 할당량(quantum)을 부여하고, 이 시간 동안만 CPU를 사용하게 하는 방식
  • 시간 할당량이 끝나면, 해당 프로세스는 준비 큐의 맨 뒤로 가고, 다음 프로세스가 CPU를 사용한다.
  • 모든 프로세스에게 공정한 CPU 시간을 보장

Priority Scheduling

  • 각 프로세스에 우선순위를 부여하고, 가장 높은 우선순위를 가진 프로세스부터 CPU를 할당하는 방식
  • 우선순위는 일반적으로 프로세스의 중요도, 타입, 메모리 요구량, 사용자 요구 등에 따라 결정된다.

Multilevel Queue Scheduling

  • 준비 큐를 여러 개의 별도 큐로 분리하고, 각 큐는 별도의 스케줄링 알고리즘(예: FCFS, SJF, RR 등)을 가진다.
  • 프로세스의 특성에 따라 다른 처리 방식을 제공할 수 있다. ex) CPU-bound vs I/O-bound