1 분 소요

4. Thread 스케줄링

Thread 스케줄링

  • 운영체제는 kernel-level thread들을 스케줄링
  • user-level 스케줄링은 thread library에 의해서 수행됨

스케줄링 경쟁 범위(contention scope)

프로세스 경쟁범위(Process-contention scope: PCS)

  • user-level thread를 가용 LWP 상에 스케줄링 (CPU스케줄링 아님)
  • 같은 process의 thread들 간에 스케줄링 경쟁
  • many-to-one 또는 many-to-many 맵핑 모델에서 사용

시스템 경쟁 범위(System-contention scope:SCS)

  • 커널이 kernel-level thread들을 CPU 스케줄링
  • system의 모든 thread들 간에 스케줄링 경쟁
  • one-to-one 맵핑 모델에서 사용

Pthread 스케줄링 정책 – thread 생성 시에 지정 허용

  • PTHREAD_SCOPE_PROCESS: PCS scheduling (many-to-many)
  • PTHREAD_SCOPE_SYSTEM: SCS scheduling (one-to-one)

5. 다중 프로세서 스케줄링

  • 여러 개의 CPU가 있는 경우에는 CPU 스케줄링이 더 복잡해짐
  • 여기서는 모든 프로세서가 동일한(homogeneous) 시스템을 가정함

다중 프로세서 스케줄링 접근 방법

  • 비대칭(Asymmetric) 다중 처리
    • 한 프로세서(master processor)가 스케줄링, 입출력처리, 시스템 활동을 처리(운영체제 커널 수행)
    • 나머지 프로세서들은 user code만 수행함 → 자료 공유 필요성을 배제하므로 간단한 설계
  • 대칭(Symmetric) 다중처리(SMP)

    • 각 프로세서는 독자적으로 스케줄링(self-scheduling)
    • ready queue
      • 공동 큐 – 모든 프로세서가 함께 사용 (자료 공유 문제)
      • 분리 큐 – 프로세서마다 분리된 자신의 큐를 사용 (자료 공유 배제) → 거의 모든 현대 운영체제에서 사용

프로세서 친화성(Affinity)

  • 프로세서 친화성(Processor Affinity)
    • process가 현재 실행 중인 프로세서에서 다른 프로세서로의 이주(migration)를 피하고 다음 스케줄링에서도 현재 프로세서에서 계속 실행을 시도하는 것

    • 프로세서를 이동하면 캐쉬 무효화와 채우기를 해야 하므로 비용이 증가

  • 프로세서 친화성 형태
    • 연성 친화성(soft affinity) – 프로세서 지정하지 않음. 이주 가능
    • 강성 친화성(hard affinity) – 프로세서(집합)을 지정.
    • 시스템의 형태(특히 주메모리 구조)가 프로세서 친화성에 영향을 줌
  • NUMA(non-uniform memory access) 시스템과 CPU 스케줄링

image

부하 균등화(Load Balancing)

</span>

  • 부하 균등화(Load balancing)
    • 모든 프로세서들 간에 부하(작업)가 고르게 배분하려는 시도
  • 공통 큐를 갖는 시스템에서 부하 균등화는 불필요

  • 분리된 개인 큐를 갖는 시스템의 부하 균등화 방식
    • push migration
      • 특정 task가 주기적으로 각 프로세서의 부하를 검사
      • 과부하 프로세서가 발견되면 process들을 idle 또는 less-busy 프로세서로 이주시킴
  • pull migration
    • idle processor가 busy processor에서 대기 중인 process들을 자신에게로 이주시킴
  • 두 방식은 배타적이 아니며, 함께 사용할 수 있음
    • Linux는 200ms마다 push 이주 알고리즘을, ready queue가 비게 되면 pull 이주 알고리즘을 수행하여 부하 균등화 시도
  • 부하 균등화는 프로세서 친화도의 장점과 상충됨

멀티쓰레드 프로세서

  • 하나의 물리적 프로세서(core)에 다수의 논리적 프로세서를 제공하는 프로세서. → 연산장치를 공유
  • 논리적 프로세서는 별도의 레지스터 집합을 가짐 → 빠른 context 전환
  • 메모리 접근 동안 연산장치를 다른 논리 프로세서가 이용함
    • 하드웨어가 논리 프로세서에게 물리 프로세서를 스케줄링

태그: ,

카테고리:

업데이트:

댓글남기기