멀티 쓰레딩이란?
●멀티 쓰레딩이란?
●멀티 쓰레딩의 주요 특징
경량화된 실행 단위
1.낮은 오버헤드 : 스레드는 같은 프로세스 내에서 실행되므로, 프로세스 간의 컨텍스트 스위칭에 비해 스레드 간 전환은 훨씬 가볍고 빠름
2.빠른 전환 : 각 스레드는 자신만의 스택과 레지스터(프로그램 카운터)를 갖지만, 코드나 힙 메모리 등은 공유하기 때문에 전환 시 재설정해야 할 데이터의 양이 적어 전환 속도가 빠름
효율적인 데이터 공유
1.공유 메모리 : 같은 프로세스 내의 스레드들은 힙 영역 등 주요 메모리 공간을 공유하므로, 데이터 전달이 빠르고 간편
2.동기화 관리 : 스레드 간의 데이터 공유는 IPC와 같은 복잡한 메커니즘 없이도 이루어지지만, 동시에 접근할 경우 동기화 문제는 여전히 존재
응답성 및 처리 성능 향상
1.병렬 처리 : 멀티쓰레딩을 통해 I/O 작업과 CPU 집약적 작업을 분리하여 동시에 처리할 수 있으므로, 시스템 전체의 응답성이 향상
2.리소스 활용 최적화 : CPU의 멀티코어 환경에서 각 스레드를 개별 코어에 할당하여 병렬 처리가 가능해지므로, 시스템 자원을 더욱 효율적으로 사용할 수 있음
멀티쓰레딩을 사용하면 프로세스 기반의 멀티태스킹보다 낮은 비용의 컨텍스트 스위칭과 효율적인 메모리 사용, 그리고 빠른 데이터 공유가 가능해지며 결과적으로, I/O 작업이나 대기 작업을 별도의 스레드로 처리하여 주 스레드가 차단되지 않고 사용자 입력이나 다른 중요한 작업에 빠르게 대응할 수 있게 됨
물론, 멀티쓰레딩도 완벽한 해결책은 아니며, 스레드들이 같은 메모리를 공유하다 보니 경쟁 상태나 교착 상태와 같은 동기화 문제가 발생할 수 있고, 이를 해결하는 과정이 복잡해지거나 디버깅이 어려워질 수 있으며, 스레드 관리를 소홀히 하면 시스템 자원이 과도하게 사용될 위험도 있음