본문 바로가기
Computer Science/Thread

스레드(Thread)

by 냉동커피 2021. 7. 11.

< 스레드 >

스레드는 프로세스보다 작은 최소 실행 단위로, 개별의 스택 영역 메모리를 갖고 나머지 코드, 데이터, 힙 영역은 공유하는 구조를 갖는다. 자원을 공유하기 때문에 동기화에 대한 리스크가 있고 스레드를 강제 종료할 경우 다른 스레드에 영향을 줄 수 있다.

 

< Multi-threading >

프로세스 내에서 여러개의 스레드를 사용하여 병렬 처리를 구현하는 기술이다. Multi-processing과는 조금 다르게 하나의 코어에서의 효율을 극대화하는 데에 중점을 두는 방식이다.

 

1. 장점

 

- 응답성 증가 : 긴 작업을 수행하거나 몇몇 작업이 일시중단되더라도 사용자와의 상호작용이 가능해져 응답성이 증가한다.

 

- 자원 공유 : 개별의 스택영역을 제외하고 프로세스의 메모리 영역을 스레드 간에 공유하기 때문에 가벼운 context-switching과 공유 메모리를 이용한 스레드 간 통신의 이점을 가진다.

 

- 멀티 프로세서 활용 : 각 스레드는 각기 다른 프로세서를 점유하여 병렬 처리할 수 있다. 단, 캐시 친화성(cache affinity)에 따라 일반적으로 프로세스에 점유할 CPU를 지정하여 사용하고, 프로세스들이 특정 CPU로 집중될 때에는 스케줄러에 의해 로드밸런싱 된다.

 

2. 단점

- 공유 자원에 대한 race condition 문제가 발생하는데, 동기화를 위한 복잡한 구조 설계(데드락 해결 등)와 오버헤드가 존재한다.

'Computer Science > Thread' 카테고리의 다른 글

프로세스(Process)  (0) 2021.07.08