Loosely Coupled Multiprocessor (Distributed Multiprocessor, Cluster) : 각 프로세서는 자체 메인 메모리와 I/O 채널을 갖는 독립적인 시스템의 집합으로 구성되는 환경이다.
Tighply Coupled Multiprocessor : 통합된 하나의 메인 메모리를 공유하고, 모든 프로세서의 작업이 OS의 통제 아래서 이루어진다. 이번 챕터에서 살펴 볼 멀티 프로세서 스케줄링은 해당 환경을 기준으로 한다.
Thread : 이전 챕터에서 스레드에 대해 배울 때, 프로세스의 실행 단위로 이해함으로써 여러가지 이점을 얻을 수 있었다. 이번 챕터에선, 멀티 프로세서 환경에서 스레드를 스케줄링 하는 방법에 대해서 알아보자.
Thread in Multiprocessor System : 멀티 프로세서 환경에서 스레드를 활용하면, 여러 프로세서가 동시에 어플리케이션의 다양한 스레드를 실행시킬 수 있으므로 병렬 처리가 극대화 될 수 있다. 하지만 스레드 간 상호작용이 많을 경우, 스레드 간 충돌이나 경합 등이 발생하여 오히려 성능 저하가 발생할 수 있다. 따라서 스레드 스케줄링이 적절히 이루어져야한다.
Thread Scheduling Method
Load Sharing (부하 공유)
프로세스는 특정 프로세서에 할당되지 않는다.
스레드는 글로벌 큐에서 대기하며, 각 프로세서는 큐에서 스레드를 선택하여 실행한다.
Gang Scheduling (갱 스케줄링)
관련된 스레드 세트를 동시에 한 세트의 프로세서에서 실행하도록 스케줄링한다.
이 방식은 다중 스레드 애플리케이션에 관련된 모든 스레드가 동시에 실행되도록 보장하며, 동기화 문제를 줄일 수 있다.
Dedicated processor assignment (전용 프로세서 할당)
부하 공유와 반대의 접근 방식이다.
스레드가 프로세서에 할당됨으로써 암묵적으로 스케줄링이 이루어진다.
각 프로그램은 실행 기간 동안 프로그램의 스레드 수와 동일한 수의 프로세서를 할당받는다.
Dynamic Scheduling (동적 스케줄링)
프로세스 실행 중에 스레드의 수를 변경할 수 있다.
작업의 특성이나 시스템 상황에 따라 스레드의 수를 유연하게 조정할 수 있으므로, 자원을 효율적으로 사용할 수 있다.
Real Time Processing : 실시간 처리에서는 작업의 처리 시간이 엄격히 제한되어 있으며, 작업이 정해진 시간 내에 완료되지 못하
Dynamic Case : 한 작업이 중단되어 레디 큐로 들어갔다가, 다시 작업이 재개될 때 다른 프로세서에 할당될 수 있음
Static Case : 한 작업은 무조건 한 프로세서에서 처리해야함.

