운영체제(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
- 커널 수준에서 스케쥴링 할 때 주로 사용한다.
- PCS(Process-Contention Scope)
- 이 부분은 대충은 감만 오고 정확하게 의미가 다가오지는 않는다.
- 조금 더 알아보고 내용을 추가하겠다.
5. Multiple-Processor Scheduling
Approaches to Multiple Processor Scheduling
- 저번에도 한번 논의한 적이 있다.
- Asymmetric multiprocessing
- 하나의 Processor가 scheduling 및 기타 작업을 모두 담당하고, 다른 Processor들은 다만 사용자 코드만을 실행한다.
- 하나의 Processor만 시스템 자료구조를 신경쓰기 때문에 구현이 쉽니다.
-
Symmetric multiprocessing: SMP
-
각 Processor가 각자 스테쥴링한다.
- 모두가 공유하는 공동의 ready queue 사용
- 각자 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로 발생한 문제
- Multicore Processors에 대한 정보는 옆의 링크에서 볼 수 있다. 컴퓨터구조(1) - 컴퓨터 추상화 및 관련 기술(3) - 현저한 변화: 단일 프로세서에서 멀티프로세서로의 변화
- Processor Core가 메모리를 접근할 때, 캐시 미스가 일어나면 Memory stall이라고 알려진 지연이 발생하게 된다.
- 이 지연시간이 생각보다 크다.
- 그래서 Processor가 이 시간에 다른 것을 처리하는 등의 작업을 하면 그 효용성을 증가시킬 수 있을 것이라 생각하게 된다.
-
Multople Thread Processor Core
- 해결 방법은 논리적으로는 간단하다. 하나의 Processor Core에 실행 단계에서 교차로 실행할 수 있는 다수의 Thread를 미리 할당해두는 것이다.
- 한 Thread가 동작하다가 Memory stall 등이 일어나면,
- Processor Core는 함께 할당해뒀던 다른 Thread를 진행시킨다.
-
방식 (추후 업데이트)
- coarse-grained
- fine-grained
Leave a Comment