다중 처리기 스케줄링

신명철·2022년 2월 7일
0

OS

목록 보기
12/27

다중 처리기 스케줄링

여러 개의 CPU 사용이 가능하면, 여러 스레드가 병렬로 수행될 수 있으므로 부하 공유(Load Sharing) 가 가능해진다.

다중처리기 스케줄링에 대한 접근 방법

비대칭 다중 처리(asymmetric multiprocessing)

: 마스터 서버(Master Server) 라는 하나의 처리기가 모든 스케줄링 결정과 I/O 처리, 다른 시스템의 활동을 처리하게 한다. 그 외 다른 처리기들은 사용자의 코드만 실행한다.

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

: 다중 처리기를 지원하는 표준 접근 방식이다. 각 처리기가 독자적으로 스케줄링을 수행한다. 처리기의 스케줄러가 Ready Queue 를 검사하고 실행할 프로세스를 선택해 스케줄링이 진행된다.

: 모든 프로세스들은 공동 Ready Queue 에 있거나 각 처리기의 Ready Queue 에 존재한다.

부하 균등화

: SMP 시스템에서 처리기의 사용을 최대화 하려면 부하를 모든 처리기에 균등하게 배분하는 것이 중요하다. Load Balancing 은 SMP 시스템의 처리기별 독립적 Ready Queue 를 갖고 있는 시스템에서만 필요한 기능이다.
(공통 Ready Queue 만을 갖고 있는 시스템에서는 처리기가 쉬게 되면 곧바로 다른 프로세스를 선택해 실행하기 때문에 필요하지 않다.)

Push 이주

  • 특정 태스크가 주기적으로 각 처리기의 부하를 검사하고 부하 불균등 상태라면 덜 바쁜 처리기로 스레드를 이동시킨다.

Pull 이주

  • 쉬고 있는 처리기가 바쁜 처리기를 기다리고 있는 프로세스를 pull 한다.

처리기 선호도

: 프로세스가 처리기에서 실행중일 때 캐시 메모리에는 가장 최근에 접근한 데이터가 처리기의 캐시를 채우게 된다. 이 때 프로세스가 처리기를 이주하게 되면 다음과 같은 상황이 벌어진다.

  1. 처리기의 캐시 메모리 내용은 무효화 된다.
  2. 처리기의 캐시는 다시 채워져야 한다.
    -> 캐시를 무효화하고 다시 채우는 작업은 비용이 많이들기 때문에 SMP 시스템에서는 대부분의 경우 같은 처리기를 이용하게 하려고 한다. 이를 처리기 선호도라고 한다.

다중 코어 프로세서

현대 컴퓨터 하드웨어는 동일한 물리적인 칩 안에 여러 개의 처리 코어를 장착한다. 각각의 코어는 구조적인 상태를 유지하고 있어서 OS 입장에서는 개별적인 논리적 CPU 로 보이게 된다.

다중 코어 프로세서는 스케줄링을 복잡하게 한다. 프로세서가 메모리에 접근할 때 데이터가 가용해지기를 기다리며 시간을 허비하는 Memory Stall 현상이 발생하는데,

이를 해결하기 위해서 하나의 코어에 2 개 이상의 하드웨어 스레드를 할당하는 다중 스레드 프로세스 코어를 구현한다.


참고하면 좋은 자료

profile
내 머릿속 지우개

0개의 댓글