CS/운영체제 & 네트워크

[TIL] CPU 스케줄링

hongjeZZ 2025. 3. 24. 17:22

CPU 스케줄링

  • 운영체제가 Ready Queue에 있는 프로세스들에게 CPU 자원을 할당하는 것
  • CPU 스케줄링 알고리즘에 따라 프로세스에서 해야 하는 일을 스레드 단위로 CPU에 할당함

 

선점 스케줄링

  • 다른 프로세스가 CPU를 사용 중이더라도, 운영체제가 프로세스로부터 자원을 빼앗아 다른 프로세스에 할당하는 방식
  • 우선순위가 높은 프로세스를 빠르게 처리할 수 있다.
  • 라운드 로빈, SRT, 멀티 큐, 멀티 피드백 큐
  • 컨텍스트 스위칭이 자주 일어나 오버헤드가 발생하여 성능 저하의 우려가 있다.

문맥교환 (Context Switching)

CPU가 어떤 하나의 프로세스를 실행하고 있는 상태에서 인터럽트 요청에 의해 다음 우선 순위의 프로세스가 실행되어야 할 때, 기존 프로세스의 상태 또는 레지스터 값(Context)을 저장하고 CPU가 다음 프로세스를 수행하도록 새로운 프로세스의 상태 또는 레지스터 값(Context)을 교체하는 작업

 

비선점 스케줄링

  • 프로세스가 종료되거나 대기 상태에 접어든 후 CPU에 할당된 프로세스를 교체하는 방식
  • 모든 프로세스를 공정하게 처리
  • SJF, FCFS

FCFS 스케줄링 - 비선점

  • 준비 큐에 먼저 도착한 프로세스를 CPU에 할당하는 프로세스로 선택하는 스케줄링 알고리즘
  • CPU 사용 시간이 짧은 프로세스들이 긴 시간을 기다려야하는 호위 효과가 발생
    • 평균 대기 시간 증가, CPU와 장치 이용률 저하

SJF 스케줄링 - 비선점

  • CPU 사용 시간에 따라 우선순위를 부여하여 프로세스를 선택하는 스케줄링 알고리즘
  • 평균 대기 시간을 줄일 수 있어, 평균 대기 시간을 최소화 할 수 있음
  • 기아 현상이 발생할 수 있다.
    • CPU 사용 시간이 긴 프로세스가 우선순위에서 계속 밀려나 CPU 할당 기회를 받지 못하게 되는 현상
    • SRT 알고리즘 - 최소 잔여 시간 우선
    • SJF + RR 방식을 혼합한 선점 스케줄링 방식
      프로세스는 time slice 만큼 CPU를 사용하고, 잔여 시간이 짧은 순으로 우선 순위를 매김

라운드 로빈(RR) 스케줄링 - 선점

  • FCFS 방식에 time slice 개념을 추가한 방식
  • 선입 선처리 방식으로 프로세스를 CPU에 할당하고, time slice가 지나면 다시 준비 큐에 삽입 (타이머)
  • time slice가 크면 FCFS와 동일하게 호위 효과가 발생할 수 있다.
  • time slice가 작으면 Context Switching으로 오버헤드가 발생할 수 있다.

우선 순위 스케줄링 - 선점

  • 프로세스에 우선순위를 부여하여 이에 따라 할당하는 방식
  • SRT, SJF는 우선순위 스케줄링으로 분류할 수 있음
  • 문제점: 기아현상
  • 해결방법: 에이징
    • 오래 대기한 프로세스의 우선순위를 점차 상승시켜 기아 현상을 제거

멀티 큐 스케줄링 - 선점

  • 다수의 별도의 큐로 분류하여 각 큐마다 제 각각의 스케쥴링 알고리즘을 적용하는 방법입니다.
    • 각 큐는 각각의 스케줄링 알고리즘을 가질 수 있음
    • 프로세스 유형별로 우선순위를 구분하여 실행하는 것에 유리함
  • 프로세스는 포어그라운드(대화형) 프로세스와 백그라운드(일괄처리) 프로세스로 구분
    • 포어그라운드 프로세스 : 응답 시간 짧게 하기 위해 Round Robin 방식 사용
    • 백그라운드 프로세스 : 계산 위주의 작업을 하며 응답 시간이 큰 의미 없어서 FCFS 사용
    • 보통 CPU 시간의 80%는 Foreground의 RR, 20%는 Background의 FCFS에 할당된다.
  • 기아 현상이 동일하게 발생할 수 있음

멀티 레벨 큐 스케줄링 - 선점

  • 다단계 큐에서 자신에게 할당된 time slice을 다 사용한 프로세스는 밑으로 내려가고 time slice 을 다 채우지 못한 프로세스는 원래 큐 위치 그대로 둔다.
  • 짧은 작업에 유리하며 입출력 위주의 작업에 우선권을 준다.
  • 처리 시간이 짧은 프로세스를 먼저 처리하기 때문에 Turnaround 평균 시간을 줄여준다.
  • 기아 현상의 해결방안인 에이징 구현 가능하다.
  • 특정 시스템에 부합하도록 구성이 가능함으로 현대 사용되는 CPU 스케줄링 알고리즘 중 가장 일반적인 CPU 스케줄링 알고리즘이다.