반응형
멀티 쓰레드(Thread)란
- 하나의 프로세스를 다수의 실행 단위로 구분하여 자원을 공유하고 자원의 생성과 관리의 중복성을 최소화하여 수행 능력을 향상 시키는 것
- 하나의 프로그램을 동시에 여러개의 일을 수행할수 있도록 해주는 것
멀티 쓰레드를 사용하는 이유
- 프로세스를 이용하여 동시에 처리하던 일을 쓰레드로 구현할 경우 메모리공간과 시스템 자원 소모가 줄어듬
- 전역 변수의 공간 또는 동적으로 할당된 공간인 힙(Heap) 영역을 이용하여 데이터를 주고 받을 수 있음. 그렇기 때문에 프로세스간 통신 방법에 비해 쓰레드 간의 통신 방법이 간단하다.(프로세스 통신방법이란?)
- 쓰레드의 문맥 교환은 프로세스의 문맥 교환과는 달리 캐시 메모리를 비울 필요가 없다.(프로세스 문맥 교환이란??) 따라서 시스템의 처리량이 향상 되고 자원 소모가 줄어들어 자연스럽게 프로그램의 응답시간이 단축된다.
- 이러한 장점 때문에 여러 프로세스로 할 수있는 작업들을 하나의 프로세스에서 여러 쓰레드로 나눠 수행하는 것
멀티 프로세스와 멀티 쓰레드의 차이점
- 멀티 프로세스 : [데이터 영역, 힙, 스택] 영역 모두를 비공유
- 멀티 쓰레드 : [데이터 영역, 힙, 스택] 영역 중 스택 영역만 비공유
멀티 쓰레딩의 장점
- 프로세스의 생성은 많은 시간과 자원을 소비한다. 이러한 단점을 최소화 시킨 일종의 (경량화된 프로세스=쓰레드)이다.(한줄 요약)
- 멀티 쓰레드에서 쓰레드간 스택 영역만 비공유하고 데이터 영역과 힙 영역을 공유한다.
- 쓰레드의 생성 및 컨텍스트 스위칭은 프로세스의 생성 및 컨텍스트 스위칭보다 빠르다.(?)
- 멀티 쓰레드 컨텍스트 스위칭(Context Switching)시 데이터 영역과 힙을 올리고 내릴 필요가 없다.
- 데이터 영역과 힙 영역을 통해 데이터 교환이 가능하다.
- 쓰레드 사이에서의 데이터 교환에서는 특별한 기법이 필요없다.
멀티 쓰레딩의 문제점
- 서로 다른 쓰레드가 데이터와 힙 역역을 공유하기 때문에 어떤 쓰레드가 다른 쓰레드에서 사용중인 변수나 자료 구조에 접근하여 엉뚱한 값을 읽어오거나 수정할 수 있다. 따라서 동기화 작업이 필요하다.
- 동기화를 통해 작업 순서 처리를 컨트롤 하고 공유자원에 대한 접근을 컨트롤 하지만 이로인해 병목현상이 발생하여 성능이 저하될 가능성이 높다.
- 그러므로 과도한 락(Lock)으로 인한 병목 현상을 줄어야한다. 공유 자원이 아닌 부분은 동기화 처리를 할 필요가 없다. 즉, 동기화 처리가 필요한 부분에만 synchronuized 키워드를 통해 동기화를 한다. 불필요한 부분까지 동기화를 할 경우 쓰레드는 락(Lock)을 획득한 쓰레드가 종료하기 전까지 대기해야한다.
반응형
'개인공부 > ICT상식' 카테고리의 다른 글
[ICT상식] API 종류 (0) | 2020.12.09 |
---|---|
[REST] HTTP/HTTPS 와 REST API 개념 (0) | 2020.11.29 |
[ICT상식] 데이터 베이스 + 기타 IT 상식 (0) | 2020.11.07 |
[ICT 상식 : 운영체제] (0) | 2020.11.06 |
[ICT 상식 : 디지털 상식] (0) | 2020.11.06 |