CPU 스케줄링 (CPU Scheduling)


→ 어떤 작업에 CPU를 배정할지 결정하는 것
⇒ 다수의 프로세스가 효율적으로 실행되고, 자원을 효율적으로 활용할 수 있도록



종류

비선점

: 어떤 프로세스가 CPU를 점유하면 다른 프로세스가 이를 빼앗을 수 없는 방식 (짧은 작업에도 장기간 대기하는 경우 발생)


  1. 선입선출 스케줄링 (First-Come First-Served Scheduling)

    • 먼저 도착한 프로세스 먼저 실행
    • 실행 시간이 긴 프로세스가 먼저 도착하면 기다리는 시간이 길어질 수 있음
  2. 최단 작업 우선 스케줄링 (Shortest Job First Scheduling)

    • 프로세스의 실행 시간을 미리 예측하여 실행 시간이 가장 짧은 프로세스 먼저 실행
    • 최적의 성능을 제공
    • 정확한 실행 시간 예측 필요
  3. 우선순위 스케줄링 (Priority Scheduling)

    • CPU를 할당할 때 우선순위가 가장 높은 프로세스 선택
    • 현재 실행 중인 프로세스 완료할 때까지 대기
  4. 최고 응답률 순서 스케줄링 (Highest Response Ratio Next)

    • 응답 비율이 가장 높은 프로세스 선택
    • SJF와 비슷하지만 대기 시간을 고려하여 프로세스 선택 (기아 상태 해결)
    • Ready Queue에 대기한 시간까지 고려하여 결정



선점

: 실행 상태에 있는 프로세스의 작업을 중단시키고 새로운 작업 시작 가능 (Context switch로 인한 오버헤드 발생)


  1. 라운드 로빈 스케줄링 (Round Robin Scheduling)

    • 시간 할당량을 갖고 프로세스를 순환하며 실행
    • 모든 프로세스가 균등하게 CPU 사용 가능
  2. 최소 잔류 시간 스케줄링 (Shortest Remaining Time Scheduling)

    • 남은 실행 시간이 가장 짧은 프로세스를 선택하여 실행
    • SJF의 선점형 버전으로, 응답성 향상
  3. 다단계 큐 스케줄링 (Multilevel Queue Scheduling)

    • 프로세스를 여러 개의 큐로 나누고 각 큐에 다른 스케줄링 알고리즘 적용
    • 각 큐는 다른 우선순위를 가지며, 높은 우선순위 큐가 먼저 실행
  4. 다단계 피드백 큐 스케줄링 (Multi-level Feedback Queue Scheduling)

    • 다단계 큐와 유사하지만, 프로세스가 다른 큐로 이동 가능
    • 응답성과 공평성을 향상시키기 위해 사용




references
👉 https://happy-my.tistory.com/96