컴퓨터공학

[운영체제] 멀티 스레드(Multi-Thread)에 대한 이해

TaeGyeong Lee 2023. 8. 10. 17:16

 

스레드

한 프로세스 내에서 실행되는 흐름의 단위입니다.

 

스레드 분류

스레드는 크게 두 가지로 나뉩니다.

  • 사용자 수준 스레드 (ULT) : 스레드 라이브러리(ex, pthread)를 사용하므로 운영체제 구분 없이 적용 가능, 그러나 스레드의 시스템 호출 수행 시 해당 스레드를 포함한 프로세스 내 다른 모든 스레드 블록 -> 성능 상 이점 별로
  • 커널 수준 스레드 (KLT) : 같은 프로세스 내 다른 스레드 사용 가능 -> 성능 상 이점

 

멀티 스레드

한 프로세스 내에서 단일 스레드가 아닌 2개 이상의 스레드를 사용하는 경우 이를 멀티 스레드로 부릅니다. 멀티 스레드는 일반적으로 성능 향상에 이점이 있습니다. 각 스레드는 각각의 다른 CPU를 활용할 수 있는데, 이런 특징은 CPU를 덜 놀게 합니다. 

또한 새 프로세스를 생성하는 것보다 새 스레드를 생성하는 것이 더 효율적입니다.

 

스레드 문맥 교환

CPU 코어 갯수보다 많은 스레드를 사용하는 경우 코어는 스레드 문맥 교환을 통해 스레드들을 번갈아 가며 수행합니다. 

 

멀티 스레드의 문제

멀티 스레드는 크게 두 가지 문제를 가지고 있습니다.

  • 실행 순서가 약속되지 않음 : 매 실행 시 작업 가능한 코어의 상황이 다르므로 스레드들의 실행 순서가 다를 수 있습니다. 
  • 경쟁 조건 : 멀티 스레드는 공유된 자원을 활용할 수 있는 장점이 있지만 이러한 특성은 오히려 문제가 될 수 있습니다. 실행 순서가 보장되지 않으므로 공유된 자원을 활용하는 경우 올바르지 않은 결과를 야기할 수 있습니다.

이러한 문제를 해결하기 위해 mutex, semaphore 등을 활용할 수 있습니다.

 

출처

 

Difference between Thread Context Switch and Process Context Switch - GeeksforGeeks

A Computer Science portal for geeks. It contains well written, well thought and well explained computer science and programming articles, quizzes and practice/competitive programming/company interview Questions.

www.geeksforgeeks.org

 

스레드 (컴퓨팅) - 위키백과, 우리 모두의 백과사전

위키백과, 우리 모두의 백과사전. 두 개의 스레드를 실행하고 있는 하나의 프로세스. 스레드(thread)는 어떠한 프로그램 내에서, 특히 프로세스 내에서 실행되는 흐름의 단위를 말한다. 일반적으

ko.wikipedia.org