[OS] Lecture 5 ‐ Process Scheduling (1 4) - kibitzing/EnGrow GitHub Wiki

유튜브 링크


진구

시스템의 성능 지표!

  • 응답시간 (Response time): 요청부터 응답까지 시간
  • 작업처리량 (Throughput)
  • 자원 활용도 (utilization Tr / Tc)

CPU Burst vs IO Burst

  • CPU를 많이 프로그램은 Compute-Bounded
  • IO를 많이 쓰는 프로그램은 IO-Bounded

OS가 스케쥴링에 있어 고려하는 기준들이 있음

스케쥴링 단계?

  • long term
    • Job scheduling: 누구 올릴지 결정 (어떤 프로세스 먼저 일 시킬까?)
    • 프로세스 수 조절
    • IO / Compute -bounded 잘~ 섞어서 :)
      • IO 기다릴 때 CB 일 시키고 뭐 이런식? 이 좋지 않을까?
  • mid term
    • 메모리 할당과 관련됨
      • 좀 더 자주 일어남 (suspended ready -> ready)
  • short tem
    • CPU (processor)
      • 가장 자주 일어남 (ready -> running)
      • CPU 기다리던 친구들
      • 스케쥴링이 매우 빨라야 함 (오버헤드)
      • 가장 빈번하게 발생

선점 / 비선점: 선점 -> 뺏을 수 있음/ 비선점 -> 못 뺏음 Non-preemptive: 반납할 때까지 못 뺏음 (오버헤드는 적지만 반납 잘 안 하면 블로커가 될 수 있음) preemptive: 뺏길 수 있음 (오버헤드가 큼) (오 클라우드 같은데서 본듯?)

우선순위 어떻게 주지? 모든 사용자 프로그램은 다 자기 우선순위 높게 주지 않나. ㅎㅎ 정적: 구현이 쉽고, 오버헤드 적음 / 환경 변화 어려움 동적: 구현은 복잡, 복잡한 만큼 오버헤드 / 유연한 대응 가능


세영

Lecture 5 - Process Scheduling(1/4)

스케줄링

  • 여러 개의 프로세스가 존재하기 때문에 자원을 할당할 프로세스를 선택해야 함
  • 이 때 프로세서 사용 시간을 프로세스에게 분배하는 작업

목적

  • 시스템 성능 향상

    • 성능
      • 응답 시간 (Interactive System, Real-time System)
      • 작업 처리량 (Batch System)
      • 자원 활용도 ($$$ System)
    • 목적에 따라 어떤 성능을 최대로 올릴 건지 고려하여 스케줄링 기법 선택

기준 및 단계

  • 기준: 프로세스의 특성, 시스템 특성, 프로세스 긴급성/우선순위/총 실행시간, …
    • 프로세스의 특성
      • CPU Burst: CPU 사용 시간 → 긴 경우 Compute-bounded process
      • I/O Burst: I/O 대기 시간 → 긴 경우 I/O-bounded process
  • 단계: Long-term, Mid-term, Short-term scheduling
    • Long-term (Job → Process)
      • Job에서 어떤 것들이 Process가 될지 결정하는 스케줄링
      • 시분할 시스템에서는 Long-term 스케줄링이 불필요 (시간을 나누기 때문)
    • Mid-term (Swap-out → Swap-in)
      • 메모리 할당(Swapping)을 결정하는 스케줄링
    • Short-term (Ready → Run)
      • 프로세서를 할당할 프로세스를 결정하는 스케줄링
      • 엄청 많이 발생되므로 빨라야 함 (성능과 밀접)

정책

선점 vs 비선점

  • 선점 (누가 내 작업을 빼앗을 수 있다)
    • 할당 시간이 종료되거나 우선순위가 높은 프로세스가 기다리고 있으면 프로세서에서 나가야 함
    • 응답성이 높아지지만, Context switch 자주 발생
  • 비선점 (빼앗을 수 없다)
    • 스스로 자원을 반납할 때 까지 사용
    • Context switch 적지만, 이 작업이 오래 걸리면 응답 시간이 증가, 긴급한 작업이 일을 못함

우선순위 (정적 vs 동적)

  • 정적
    • 프로세스 생성 시 결정된 우선순위가 유지됨
    • 구현이 쉽고 우선순위 계산이 적지만, 환경 변화에 대응이 어려움
  • 동적
    • 프로세스 상태 변화에 따라 우선순위 변경
    • 환경 변화에 유연하지만, 구현이 복잡하고 우선순위 계산 시 부하가 큼