[OS] 운영체제(7장) CPU 스케줄링 - 2
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 스케줄링
부하 균등화(Load Balancing)
</span>
- 부하 균등화(Load balancing)
- 모든 프로세서들 간에 부하(작업)가 고르게 배분하려는 시도
-
공통 큐를 갖는 시스템에서 부하 균등화는 불필요
- 분리된 개인 큐를 갖는 시스템의 부하 균등화 방식
- push migration
- 특정 task가 주기적으로 각 프로세서의 부하를 검사
- 과부하 프로세서가 발견되면 process들을 idle 또는 less-busy 프로세서로 이주시킴
- push migration
- pull migration
- idle processor가 busy processor에서 대기 중인 process들을 자신에게로 이주시킴
- 두 방식은 배타적이 아니며, 함께 사용할 수 있음
- Linux는 200ms마다 push 이주 알고리즘을, ready queue가 비게 되면 pull 이주 알고리즘을 수행하여 부하 균등화 시도
- 부하 균등화는 프로세서 친화도의 장점과 상충됨
멀티쓰레드 프로세서
- 하나의 물리적 프로세서(core)에 다수의 논리적 프로세서를 제공하는 프로세서. → 연산장치를 공유
- 논리적 프로세서는 별도의 레지스터 집합을 가짐 → 빠른 context 전환
- 메모리 접근 동안 연산장치를 다른 논리 프로세서가 이용함
- 하드웨어가 논리 프로세서에게 물리 프로세서를 스케줄링
댓글남기기