[운영체제][프로세스관리] CPU Scheduling #4 다중 처리기 스케줄링(Multiple-Processor Scheduling)

2022. 2. 23. 16:58OperatingSystem

학습목표
1. 다중 처리기 스케줄링에 대한 2가지 접근 방법에 대해서 학습
2. 처리기 친화성에 대해서 학습
3. 부하 균등화에 대해서 학습
4. 대칭적 다중 쓰레딩에 대해서 학습

 

1. 다중 처리기 스케줄링 대한 접근 방법(Approaches to Multiple-Processor Scheduling)

다중 처리기 시스템의 CPU 스케줄링하는 2가지 방법이 존재합니다.

  • 비대칭 다중 처리(asymmetric multiprocessing)
  • 대칭 다중 처리(symmetric multiprocessing, SMP)

비대칭 다중 처리(asymmetric multiprocessing)

하나의 처리기가 모든 스케줄링 결과 입/출력 처리 그리고 다른 시스템으로의 이동을 취급하게 하는 것입니다. 다른 처리기들은 사용자 코드만을 수행합니다. 이러한 방법을 비대칭 다중 처리라고 합니다.

 

비대칭 다중 처리는 단지 하나의 처리기만이 시스템 자료 구조를 접근하여 자료 공유의 필요성을 배제하기 때문에 간단하다는 특징이 있습니다.

 

대칭 다중 처리(symmetric multiprocessing, SMP)

대칭 다중 처리 방법은 각각의 처리기가 독자적으로 스케줄링하는 방법입니다. 각 처리기의 스케줄러가 준비 완료 큐(공동의 준비 완료 큐 or 처리기마다 가지고 있는 준비 완료 큐)를 검사해서 실행할 프로세스를 선택하여 수행합니다.

 

대칭 다중 처리의 주의점

  • 여러개의 처리기가 공동 자료 구조에 접근하여 갱신한다면 스케줄러는 신중하게 프로그램되어야함
  • 두 처리기가 같은 프로세스를 선택하지 않도록 해야함
  • 프로세스들이 큐에서 사리지지 않도록 보장해야함

 

2. 처리기  친화성(Processor Affinity)

처리기 친화성(Processor Affinity)란 무엇인가?

처리기 친화성이란 SMP 시스템이 한 처리기에서 다른 처리기로의 이주를 피하고 대신 같은 처리기에서 프로세스를 실행시키려고 하는 현상입니다.

 

처리기 친화성 현상이 발생하는 원인은 무엇인가?

프로세스가 특정 처리기에서 실행중일 때 처리기에 의해 가장 최근에 접근된 자료가 그 처리기의 캐시를 캐시 메로리에 채우게 됩니다. 그런데 프로세스가 다른 처리기로 이주된다면 현재 처리기의 캐시 메모리 내용은 삭제되고 이주해 가는 처리기의 캐시 메모리에 다시 채워져야 합니다. 즉, 현재 처리기의 캐시 메모리를 삭제하고 이주하는 처리기의 캐시 메모리를 다시 채우는 작업은 비용이 많이 들기 때문에 처리기 친화성 현상이 발생하는 것입니다.

 

처리기 친화성의 종류

  • 약한 친화성(soft affinity) : 운영체제가 동일한 처리기에서 프로세스를 실행시키려고 노력하는 정책을 가지고 있지만 보장하지는 않을 때, 이 경우 프로세스가 처리기 사이에서 이주하는 것이 가능함
  • 강한 친화성(hard affinity) : 시스템 호출을 통하여 프로세스는 다른 처리기로 이주하지 않겠다고 명시적으로 지정할 수 있음

3. 부하 균등화(Load Balancing)

부하 균등화란 무엇인가?

부하 균등화란 SMP 시스템의 모든 처리기 사이에 부하가 고르게 배분되도록 시도하는 것을 의미합니다. 단, 부하 균등화 기능은 각 처리기가 자기 자신만의 큐를 가지고 있는 시스템에서만 필요한 기능입니다.

 

부하 균등화의 두가지 방식

  • push 이주(migration) : 특정 테스크가 주기적으로 각 처리기의 부하를 검사하고 만일 불균형 상태로 밝혀지면 과부하인 처리기에서 쉬고 있거나 덜 바쁜 처리기로 프로세스를 이동(또는 push)시킴으로써 부하를 분배하는 방식
  • pull 이주 : 쉬고 있는 처리기가 바쁜 처리기를 기다리고 있는 프로세스를 가져오는 방식

 

4. 대칭적 다중 쓰레딩(Symmetric Multithreading)

대칭적 다중 쓰레딩이란 무엇인가?

SMP 시스템은 다수의 물리 처리기를 제공함으로써 다수의 쓰레드가 동시에 실행되게 합니다. 여기서 SMT의 착상은 동일한 처리기 상에서 여러 개의 논리 처리기를 생성하는 것입니다. 각 논리 처리기는 구조 상태(architecture state)를 가지게 되며 이때 인터럽트가 물리처리기가 아닌 논리적 처리기에 전달되고 처리되는 것을 의미합니다. 아래의 그림은 SMT의 구조입니다.

 

References

Operating System Concepts, 7th Ed. feat. by Silberschatz et al.
대칭적 다중 쓰레딩