참고 : [Course] Operating System (CPA310) - 운영체제 강의


[ 운영 체제 6-1강. 프로세스 스케줄링 ]

프로세스 스케줄링 (Process Scheduling)


CPU를 할당받는 경우

1. 다중 프로그래밍

  • 시스템 내에는 여러 개의 Process가 존재한다. 따라서, 자원을 “어느 Process에 할당”할지를 선택해야!
  • 이를 Scheduling이라고 한다!
  • 자원관리
    • 1) 시간 분할 관리
    • 2) 공간 분할 관리


1) 시간 분할 관리 ( time sharing )

  • 하나의 자원을 “여러 thread가 번갈아” 가면서 사용

  • ex) Process

    ( 프로세스 스케줄링 : 프로세서 사용 시간을, 프로세스들에게 분배 )


2) 공간 분할 관리 ( space sharing )

  • 하나의 자원을 분할하여, “동시에” 사용
  • ex) Memory


2. 스케줄링의 목적

목적 : 시스템의 성능 향상

대표적인 성능 지표

  • 1) 응답 시간 ( response time )
    • '’작업 요청 ~ 응답’’ 까지의 시간
  • 2) 작업 처리량( through put )
    • 단위 시간 동안, 완료한 작업 수
  • 3) 자원 활용도 ( resource utilization )
    • 주어진 시간 동안, 자원이 활용된 시간


“목적에 맞는” 지표를 고려하여 “스케줄링 기법을 선택”

  • ex) 응답 시간 : Interactive System, Real-time System
  • ex) 작업 처리량 : Batch System
  • ex) 자원 활용도 : 비싼 장비 사용 시


3. 대기 / 응답 / 반환 시간

figure2


4. 스케줄링 기준

스케줄링 기법 선택시 고려해야 하는 사항/기준들은?

  • 1) Process의 특성
    • I/O-bounded vs. Compute-bounded
  • 2) System의 특성
    • Batch System vs. Interactive System
  • 3) Process의 긴급성
    • Hard vs. Soft real-time vs. Non-real-time System
  • 4) Process의 우선순위
  • 5) Process의 총 실행 시간


CPU burst vs. I/O burst

CPU 쓰다가, I/O 하다가, CPU 쓰다가, I/O하다가…반복

  • 프로세스는 위 과정의 반복을 통해 작동한다

“CPU burst” : CPU 사용 시간

“I/O burst” : I/O 대기 시간


위 과정 중…

  • CPU를 더 많이 쓴다 = compute-bounded
  • I/O를 더 많이 한다 = I/O bounded


5. 스케줄링의 단계

발생하는 “빈도 및 할당 자원”에 따른 구분

  • Long-term scheduling
  • Mid-term ~
  • Short-term ~


(1) Long-term scheduling

( 긴 시간에 한번 씩 이뤄지는 스케줄링 )

  • Job Scheduling : 시스템에 제출 할 Job 결정

  • 다중 프로그래밍의 정도 조절 ( = 시스템 내의 Process의 수 조절 )
  • I/O-bounded & Compute-bounded Process를 둘 다 고르게 선택해야!
    • 이유 : CPU & I/O … 그 어느 애도 쉬지 않고 잘 일하게 하기 위해!
  • 시분할 시스템 : **Long-term scheduling 불필요! ( 덜 필요 ) **
    • 이유 : 어차피 시간을 나눠서 사용하기 떄문에!


(2) Mid-term scheduling

  • 메모리 할당 결정


(3) Short-term scheduling

  • Process scheduling ( CPU 할당해주는 스케줄링 )
  • 가장 자주 일어나는 스케줄링…. 빨라야!
  • Ready -> Running 상태로 보내는 스케줄링!


6. 스케줄링의 단계

figure2


7. 스케줄링 정책 ( Policy )

  • 1) 선점 vs 비선점
  • 2) 우선순위 (Prioroty)


(1) 선점(Preemptive) vs 비선점(Non-preemptive)

선점 & 비선점

  • 선점 = 빼앗을 수 있다

  • 비선점 = 뺴앗을 수 없다


비선점 Scheduling

  • 할당 받은 자원을 “스스로 반납할 때 까지”는 계속 사용 가능 ( 뺏길 일 X )
  • 장/단점
    • 장 : Context Switch overhead 적어
    • 단 : 잦은 우선 순위 역전 & 평균 응답 시간 증가


선점 Scheduling

  • 사용 중인 자원을 뻇길 수 있음

    ( 우선 순위 높은 프로세스가 생긴다면…? )

  • 장/단점

    • 장 : 응답성이 높아짐 ( Time-sharing / Real-time System에 적합 )
    • 단 : Context Switch overhead가 큼


(2) Priority

Priority = Process의 “중요도/우선순위”


Static(정적) Priority

  • 한번 우선 순위 결정 시, “불변”
  • 구현 쉬움 & overhead 적음
  • 시스템 환경 변화에 대한 대응이 hard


Dynamic(동적) Priority

  • 한번 우선 순위 결정 되어도, “가변”

  • 구현이 복잡 & (priority 재계산에 따른) overhead 큼
  • 시스템 환경 변화에 유연하게 대응!


8. 기본 스케줄링 알고리즘