OS - CPU 스케줄링

choko's avatar
Jun 29, 2024
OS - CPU 스케줄링
  • CPU 스케줄링이란 언제 어떤 프로세스에 CPU를 할당할 지 결정하는 작업이다.
  • 비선점형 스케줄링
    • 어떤 프로세스가 CPU를 점유하고 있다면, 이를 뺏을 수 없는 방식
    • Context switching이 상대적으로 적지만 프로세스 배치에 따라 효율성 차이가 많이 날 수 있다.
    • FCFS, SJF, 우선순위(Priority)
  • 선점형 스케줄링
    • 어떤 프로세스가 CPU를 점유하고 있더라도 운영체제가 강제로 뺏을 수 있는 방식
    • 현대 운영체제가 사용하고 있는 방식으로, 효율적인 운영이 가능하지만 잦은 Context switching으로 오버헤드가 커질 수 있다.
    • 라운드로빈, SRF, 다단계 큐
 

 
 

비선점형 스케줄

  • FCFS (First Come, First Served)
    • notion image
    • 가장 먼저 요청한 프로세스에 CPU를 할당해주는 방식
    • 특정 오래 걸리는 프로세스 때문에 OS가 전체적으로 느려질 수 있다.
 
 
  • SJF(Shortest Job First)
    •  
      notion image
    • 실행 시간이 짧은 프로세스를 먼저 실행시킴
    • 실행 시간이 긴 프로세스가 무기한으로 대기하게 될 수 있다.
    •  
       
  • 우선순위(Priority)
    •  
      notion image
    • 각각의 프로세스에 우선순위를 부여하는 알고리즘
    • 오래된 프로세스에 우선순위를 높게 설정하는 식의 전략을 사용할 수 있다.
 
 
 

선점형 스케줄링

  • 라운드 로빈
    •  
      notion image
    • 각각의 프로세스에 동일한 할당 시간을 부여하여 해당 시간 동안만 CPU를 이용하게 한다.
    • 현대 운영체제가 사용하는 방식
    •  
 
  • SRF
    • notion image
    • SJF와 다르게, 중간에 더 짧은 프로세스가 들어오면 Context Switching을 진행하여 더 짧은 프로세스로 교환하는 방식
 
 
  • 다단계 큐
    • notion image
    • 우선순위에 따른 준비 큐가 여러 개의 큐들로 나뉘고, 각각의 큐는 각자의 스케줄링 알고리즘을 가지고 있는 방식
Share article

Tom의 TIL 정리방