목차
멀티 쓰레드
멀티쓰레딩은 컴퓨터 과학에서 프로세스 내에서 여러 스레드가 동시에 실행되는 것을 말합니다.
이는 프로세스를 병렬로 동시에 처리를 가능하게 하여 프로그램의 실행 효율을 높일 수 있는 기술입니다.
멀티쓰레딩의 장점
1.
자원의 효율적 사용 : 스레드는 프로세스 내의 자원을 공유하기 때문에, 멀티쓰레딩은 자원 생성과 관리의 오버헤드를 줄일 수 있습니다.
2.
응답성 향상 : 하나의 스레드가 대기 상태에 있을 때, 다른 스레드가 작업을 계속 수행할 수 있어 프로그램의 응답성이 향상됩니다.
3.
경제성 : 프로세스 생성에 비해 스레드 생성 및 컨텍스트 스위칭 비용이 낮아 자원을 경제적으로 사용할 수 있습니다.
4.
병렬성의 향상 : 멀티코어 프로세서에서는 여러 스레드를 동시에 실행시켜 병렬 처리를 할 수 있어 처리 능력이 크게 향상됩니다.
멀티쓰레딩의 단점과 고려 사항
•
동기화 : 스레드들이 같은 데이터에 동시에 액세스하려 할 때, 데이터의 일관성을 유지하기 위해 동기화가 필요합니다.
•
데드락(교착상태) : 여러 스레드가 서로가 보유한 자원의 해제를 기다리며 영원히 대기 상태에 빠지는 현상입니다.
•
스레드 안정성 : 공유 자원에 여러 스레드가 동시에 접근할 때 발생할 수 있는 문제를 방지하기 위한 코딩 기법과 동기화 메커니즘이 필요합니다.
보통 멀티 스레드라고 하면, 멀티 코어에서의 멀티 스레드 동작을 말합니다.
그러나 싱글 코어에서도 멀티 스레드를 사용할 수 있으며, 이에는 장단점이 있습니다. 이 부분에 대해 살펴보겠습니다.
싱글 코어, 멀티 코어
싱글 코어 프로세서에서의 멀티쓰레딩
장점
1.
응답성 향상 : 멀티 쓰레딩은 응답 시간을 단축시킬 수 있습니다.
a.
예를 들어, A 프로세스에서 a, b, c, d 스레드가 실행 중일 때, a 스레드가 어떤 자원을 기다리는 동안 b, c, d 스레드를 실행하여 a의 대기 시간 동안에도 해당 프로세스를 계속 실행할 수 있습니다.
2.
자원 활용 극대화 : 시분할 방식을 통해 CPU 사용률을 최대화하여 프로그램이 더 효율적으로 실행될 수 있도록 합니다.
3.
개발의 용이성 : 멀티쓰레딩은 비동기 작업의 관리를 단순화하며, 복잡한 작업을 더 작고 관리하기 쉬운 단위로 나눌 수 있습니다.
단점
1.
동기화 복잡성 : 공유 자원에 대한 접근을 관리하기 위해 추가적인 동기화 작업이 필요하며, 이는 개발의 복잡성을 증가시킵니다.
2.
성능 향상의 한계 : 실제 병렬 처리가 이루어지지 않기 때문에, 처리 능력 자체는 크게 향상되지 않습니다.
멀티 코어 프로세서에서의 멀티쓰레딩
장점
1.
병렬 처리: 멀티쓰레딩을 통해 여러 코어에서 동시에 다양한 작업을 수행할 수 있어, 처리 능력과 프로그램 성능이 크게 향상됩니다.
단점
1.
동기화 복잡성 : 멀티코어 환경에서는 동기화 문제가 더욱 복잡해지며, 이로 인한 성능 저하가 발생할 수 있습니다.
2.
데드락 위험 : 잘못된 동기화는 데드락과 같은 병렬 실행의 문제를 야기할 수 있으며, 이는 프로그램의 안정성을 해칠 수 있습니다.