여러 개의 CPU 사용이 가능하면, 여러 스레드가 병렬로 수행될 수 있으므로 부하 공유(Load Sharing) 가 가능해진다.
: 마스터 서버(Master Server) 라는 하나의 처리기가 모든 스케줄링 결정과 I/O 처리, 다른 시스템의 활동을 처리하게 한다. 그 외 다른 처리기들은 사용자의 코드만 실행한다.
: 다중 처리기를 지원하는 표준 접근 방식이다. 각 처리기가 독자적으로 스케줄링을 수행한다. 처리기의 스케줄러가 Ready Queue 를 검사하고 실행할 프로세스를 선택해 스케줄링이 진행된다.
: 모든 프로세스들은 공동 Ready Queue 에 있거나 각 처리기의 Ready Queue 에 존재한다.
: SMP 시스템에서 처리기의 사용을 최대화 하려면 부하를 모든 처리기에 균등하게 배분하는 것이 중요하다. Load Balancing 은 SMP 시스템의 처리기별 독립적 Ready Queue 를 갖고 있는 시스템에서만 필요한 기능이다.
(공통 Ready Queue 만을 갖고 있는 시스템에서는 처리기가 쉬게 되면 곧바로 다른 프로세스를 선택해 실행하기 때문에 필요하지 않다.)
: 프로세스가 처리기에서 실행중일 때 캐시 메모리에는 가장 최근에 접근한 데이터가 처리기의 캐시를 채우게 된다. 이 때 프로세스가 처리기를 이주하게 되면 다음과 같은 상황이 벌어진다.
현대 컴퓨터 하드웨어는 동일한 물리적인 칩 안에 여러 개의 처리 코어를 장착한다. 각각의 코어는 구조적인 상태를 유지하고 있어서 OS 입장에서는 개별적인 논리적 CPU 로 보이게 된다.
다중 코어 프로세서는 스케줄링을 복잡하게 한다. 프로세서가 메모리에 접근할 때 데이터가 가용해지기를 기다리며 시간을 허비하는 Memory Stall
현상이 발생하는데,
이를 해결하기 위해서 하나의 코어에 2 개 이상의 하드웨어 스레드를 할당하는 다중 스레드 프로세스 코어를 구현한다.
참고하면 좋은 자료