SMP 스레드 스케줄링

SMP 환경에서 스레드 지원을 사용하면 SMP 활용 애플리케이션을 구현하기가 훨씬 쉬워지고 비용도 적게 듭니다.

스레드 지원에서는 프로그램 실행 제어가 두 부분으로 나뉩니다.

  • 프로세스는 메모리 및 파일에 대한 액세스와 같이 프로그램을 실행하는 데 필요한 물리적 자원의 모음입니다.
  • 스레드는 명령어 주소 레지스터 및 범용 레지스터의 현재 내용과 같은 프로그램 인스턴스의 실행 상태입니다. 각 스레드는 제공된 프로세스 문맥 내에서 실행되며 프로세스의 자원을 사용합니다. 여러 스레드가 하나의 프로세스 내에서 실행되어 프로세스 자원을 공유할 수 있습니다.

프로세스는 각각 자체 메모리 자원 세트를 보유하고 있고 설정하는 데 상당한 시스템 처리가 필요하므로, 여러 개의 제어 흐름을 작성하기 위해 여러 개의 프로세스를 분기 실행하는 것은 번거롭고 비용도 많이 듭니다. 하나의 프로세스 내에 여러 개의 스레드를 작성하면 처리량도 적어지고 메모리도 덜 사용하게 됩니다.

스레드 지원은 다음 두 가지 레벨로 제공됩니다.

  • 애플리케이션 프로그램 환경의 libpthreads.a 지원
  • 커널 스레드 지원

스레드는 일반적으로 멀티프로세싱을 이용하기 위한 편리하고 효율적인 메커니즘이지만 스레드와 연관된 확장성에는 한계가 있습니다. 스레드는 프로세스 자원과 상태를 공유하기 때문에 이러한 자원을 잠그고 직렬화하는 데 종종 확장성이 제한될 수 있습니다.