logo

운영 체제의 멀티스레딩 모델

이 기사에서는 운영 체제의 멀티스레딩 모델을 이해합니다.

멀티스레딩 모델:

멀티스레딩을 사용하면 애플리케이션이 해당 작업을 개별 스레드로 나눌 수 있습니다. 멀티 스레드에서는 스레드 수에 따라 동일한 프로세스나 작업이 수행될 수도 있고, 멀티스레딩에서 작업을 수행하는 스레드가 두 개 이상 있다고 말할 수도 있습니다. 멀티스레딩을 사용하면 멀티태스킹이 가능합니다.

텍스트 래퍼 CSS
운영 체제의 멀티스레딩 모델

단일 스레딩 시스템의 주요 단점은 한 번에 하나의 작업만 수행할 수 있다는 것입니다. 따라서 이러한 단일 스레딩의 단점을 극복하기 위해 여러 작업을 수행할 수 있는 멀티스레딩이 있습니다.

예를 들어:

운영 체제의 멀티스레딩 모델

위의 예에서 client1, client2, client3은 대기 없이 웹 서버에 액세스하고 있습니다. 멀티스레딩에서는 여러 작업이 동시에 실행될 수 있습니다.

운영체제에서 스레드는 사용자 수준 스레드와 커널 수준 스레드로 구분됩니다. 사용자 수준 스레드는 커널 위에서 독립적인 형태로 처리되므로 커널 지원 없이 관리됩니다. 반면에 운영 체제는 커널 수준 스레드를 직접 관리합니다. 그럼에도 불구하고 사용자 수준 스레드와 커널 수준 스레드 간에는 일종의 관계가 있어야 합니다.

이러한 관계를 분류하는 세 가지 확립된 멀티스레딩 모델이 있습니다.

  • 다대일 멀티스레딩 모델
  • 일대일 멀티스레딩 모델
  • 다대다 멀티스레딩 모델

다대일 멀티스레딩 모델:

다대일 모델은 여러 사용자 수준 스레드를 하나의 커널 스레드에 매핑합니다. 이러한 유형의 관계는 효과적인 컨텍스트 전환 환경을 촉진하며 스레드 지원이 없는 간단한 커널에서도 쉽게 구현됩니다.

스크립트를 실행 가능하게 만들기

이 모델의 단점은 주어진 시간에 커널 수준 스레드 일정이 하나만 있기 때문에 이 모델은 다중 스레드 프로세스 또는 다중 프로세서 시스템에서 제공하는 하드웨어 가속을 활용할 수 없다는 것입니다. 여기서 모든 스레드 관리는 사용자 공간에서 수행됩니다. 차단이 발생하면 이 모델은 전체 시스템을 차단합니다.

운영 체제의 멀티스레딩 모델

위 그림에서 다대일 모델은 모든 사용자 수준 스레드를 단일 커널 수준 스레드에 연결합니다.

HTML에서 자바스크립트 함수 호출

일대일 멀티스레딩 모델

일대일 모델은 단일 사용자 수준 스레드를 단일 커널 수준 스레드에 매핑합니다. 이러한 유형의 관계는 여러 스레드를 병렬로 실행하는 것을 용이하게 합니다. 그러나 이러한 이점에는 단점도 따릅니다. 모든 새로운 사용자 스레드 생성에는 오버헤드를 유발하는 해당 커널 스레드 생성이 포함되어야 하며, 이는 상위 프로세스의 성능을 저하시킬 수 있습니다. Windows 시리즈 및 Linux 운영 체제에서는 스레드 수의 증가를 제한하여 이 문제를 해결하려고 합니다.

운영 체제의 멀티스레딩 모델

위 그림에서 한 모델은 하나의 사용자 수준 스레드를 단일 커널 수준 스레드에 연결합니다.

다대다 모델 멀티스레딩 모델

이 유형의 모델에는 여러 사용자 수준 스레드와 여러 커널 수준 스레드가 있습니다. 생성된 커널 스레드 수는 특정 응용 프로그램에 따라 다릅니다. 개발자는 두 수준 모두에서 스레드를 최대한 많이 만들 수 있지만 동일하지 않을 수도 있습니다. 다대다 모델은 다른 두 모델 간의 절충안입니다. 이 모델에서는 어떤 스레드라도 차단 시스템 호출을 하면 커널은 다른 스레드 실행을 예약할 수 있습니다. 또한 멀티 쓰레드를 도입해 이전 모델처럼 복잡함도 존재하지 않는다. 이 모델을 사용하면 여러 커널 스레드를 생성할 수 있지만 이 모델로는 진정한 동시성을 달성할 수 없습니다. 이는 커널이 한 번에 하나의 프로세스만 예약할 수 있기 때문입니다.

운영 체제의 멀티스레딩 모델

다중 스레딩 모델의 다대다 버전은 여러 사용자 수준 스레드를 위 그림의 커널 수준 스레드와 동일하거나 훨씬 덜 다양한 것과 연관시킵니다.