운영체제(5) - CPU Scheduling(2)

‘운영체제’를 공부하여 정리한 내용입니다.

4. Thread Scheduling

경쟁 범위

  • 경쟁 범위에 따라, 스케쥴링을 하는 방식이 달라진다.

    • PCS(Process-Contention Scope)
      • many-to-one, many-to-many model
      • 유저 수준에서 스케쥴링 할 때 주로 사용한다.
      • 우선 순위에 따라 움직이며, 우선순위는 주로 자동으로 지정된다.
      • 우선순위에 따라 움직이고 있던 스레드를 선점할 수 있다.
    • SCS(System-Contention Scope)
      • one-to-one
      • 커널 수준에서 스케쥴링 할 때 주로 사용한다.
  • 이 부분은 대충은 감만 오고 정확하게 의미가 다가오지는 않는다.
  • 조금 더 알아보고 내용을 추가하겠다.

5. Multiple-Processor Scheduling

Approaches to Multiple Processor Scheduling

  • 저번에도 한번 논의한 적이 있다.
  • Asymmetric multiprocessing
    • 하나의 Processor가 scheduling 및 기타 작업을 모두 담당하고, 다른 Processor들은 다만 사용자 코드만을 실행한다.
    • 하나의 Processor만 시스템 자료구조를 신경쓰기 때문에 구현이 쉽니다.
  • Symmetric multiprocessing: SMP

    • 각 Processor가 각자 스테쥴링한다.

      1. 모두가 공유하는 공동의 ready queue 사용
      2. 각자 ready queue 존재
    • 주의할 점

      • 한 Process가 동시에 여러 Processor에 할당되지 않도록
      • Processor들을 옮겨다니다가 OS가 Process에 대한 정보를 잃어버리지 않도록 (Dangling pointer 같은거)

Processor Affinity

  • 캐시등을 사용하고 있을 때, 특정 Process의 입장에서 자신을 처리하는 Processor가 달라지면 매번 캐시 메모리 내용이 쓸모 없어지게 된다.
    • 이러한 비효율을 없애기 위해서 많은 OS는 특정 Process가 처리되는 Processor를 최대한 바꾸지 않도록 한다.
    • 또한 Processor sets등을 두어, 처리하는 Processor 집단을 두는 식으로 아예 Process와 Processor가 일대일로 매칭되지는 않고 어느 정도 유연성을 유지하도록 하기도 한다.

Load Balancing

  • 모든 Processor가 최대한 일을 균등하게 맡아서 할 수 있도록 유지한다.
    • Push 이주: 부하가 많이 걸린 Processor가 자신의 Process를 부하가 적은 Processor로 옮기는 작업
    • Pull 이주: 반대로 부하가 적은 Processor가 바쁜 Processor의 Process를 당겨오는 작업이다.

Multicore Processors

  • Multicore Processors로 발생한 문제

  • Multople Thread Processor Core

    • 해결 방법은 논리적으로는 간단하다. 하나의 Processor Core에 실행 단계에서 교차로 실행할 수 있는 다수의 Thread를 미리 할당해두는 것이다.
    • 한 Thread가 동작하다가 Memory stall 등이 일어나면,
    • Processor Core는 함께 할당해뒀던 다른 Thread를 진행시킨다.
  • 방식 (추후 업데이트)

    • coarse-grained
    • fine-grained

Leave a Comment