Search

멀티 쓰레드

class
운영체제
상태
완료
날짜
목차

멀티 쓰레드

멀티쓰레딩은 컴퓨터 과학에서 프로세스 내에서 여러 스레드가 동시에 실행되는 것을 말합니다.
이는 프로세스를 병렬로 동시에 처리를 가능하게 하여 프로그램의 실행 효율을 높일 수 있는 기술입니다.

멀티쓰레딩의 장점

1.
자원의 효율적 사용 : 스레드는 프로세스 내의 자원을 공유하기 때문에, 멀티쓰레딩은 자원 생성과 관리의 오버헤드를 줄일 수 있습니다.
2.
응답성 향상 : 하나의 스레드가 대기 상태에 있을 때, 다른 스레드가 작업을 계속 수행할 수 있어 프로그램의 응답성이 향상됩니다.
3.
경제성 : 프로세스 생성에 비해 스레드 생성 및 컨텍스트 스위칭 비용이 낮아 자원을 경제적으로 사용할 수 있습니다.
4.
병렬성의 향상 : 멀티코어 프로세서에서는 여러 스레드를 동시에 실행시켜 병렬 처리를 할 수 있어 처리 능력이 크게 향상됩니다.

멀티쓰레딩의 단점과 고려 사항

동기화 : 스레드들이 같은 데이터에 동시에 액세스하려 할 때, 데이터의 일관성을 유지하기 위해 동기화가 필요합니다.
데드락(교착상태) : 여러 스레드가 서로가 보유한 자원의 해제를 기다리며 영원히 대기 상태에 빠지는 현상입니다.
스레드 안정성 : 공유 자원에 여러 스레드가 동시에 접근할 때 발생할 수 있는 문제를 방지하기 위한 코딩 기법과 동기화 메커니즘이 필요합니다.
보통 멀티 스레드라고 하면, 멀티 코어에서의 멀티 스레드 동작을 말합니다. 그러나 싱글 코어에서도 멀티 스레드를 사용할 수 있으며, 이에는 장단점이 있습니다. 이 부분에 대해 살펴보겠습니다.

싱글 코어, 멀티 코어

싱글 코어 프로세서에서의 멀티쓰레딩

장점

1.
응답성 향상 : 멀티 쓰레딩은 응답 시간을 단축시킬 수 있습니다.
a.
예를 들어, A 프로세스에서 a, b, c, d 스레드가 실행 중일 때, a 스레드가 어떤 자원을 기다리는 동안 b, c, d 스레드를 실행하여 a의 대기 시간 동안에도 해당 프로세스를 계속 실행할 수 있습니다.
2.
자원 활용 극대화 : 시분할 방식을 통해 CPU 사용률을 최대화하여 프로그램이 더 효율적으로 실행될 수 있도록 합니다.
3.
개발의 용이성 : 멀티쓰레딩은 비동기 작업의 관리를 단순화하며, 복잡한 작업을 더 작고 관리하기 쉬운 단위로 나눌 수 있습니다.

단점

1.
동기화 복잡성 : 공유 자원에 대한 접근을 관리하기 위해 추가적인 동기화 작업이 필요하며, 이는 개발의 복잡성을 증가시킵니다.
2.
성능 향상의 한계 : 실제 병렬 처리가 이루어지지 않기 때문에, 처리 능력 자체는 크게 향상되지 않습니다.

멀티 코어 프로세서에서의 멀티쓰레딩

장점

1.
병렬 처리: 멀티쓰레딩을 통해 여러 코어에서 동시에 다양한 작업을 수행할 수 있어, 처리 능력과 프로그램 성능이 크게 향상됩니다.

단점

1.
동기화 복잡성 : 멀티코어 환경에서는 동기화 문제가 더욱 복잡해지며, 이로 인한 성능 저하가 발생할 수 있습니다.
2.
데드락 위험 : 잘못된 동기화는 데드락과 같은 병렬 실행의 문제를 야기할 수 있으며, 이는 프로그램의 안정성을 해칠 수 있습니다.