Multi Thread
멀티 스레드란 하나의 프로세스를 다수의 실행 단위로 구분하여 자원을 공유하고 자원의 생성과 관리의 중복성을 최소화하여 수행 능력을 향상하는 것을 의미한다. 쉽게 말해 하나의 프로그램에 동시에 여러 개의 일을 수행할 수 있도록 해주는 것이다.
Multi Thread와 Multi Process
멀티 스레드는 데이터, 힙, 스택 영역 중 스택 영역만 비공유이고, 멀티 프로세스는 세 영역 모두 비공유이다.
Multi Thread의 장점
멀티 스레드의 장점은 다음과 같다.
- 멀티 프로세스에 비해 메모리 공간과 시스템 자원 소모가 줄어들게 된다.
- 스레드 간 통신이 필요한 경우에 별도의 자원이 필요한 게 아니라 데이터 영역이나 힙 영역을 이용하여 통신할 수 있기 때문에 프로세스 간 통신 방법에 비해 훨씬 간단하다.
- 스레드 콘텍스트 스위칭은 캐시 메모리를 비울 필요가 없기 때문에 더 빠르다.
- 스레드 콘텍스트 스위칭 시 데이터 영역과 힙 영역은 올리고 내릴 필요가 없다.
- 시스템 처리량이 향상되고 자원 소모가 줄어들어 프로그램의 응답 시간이 단축된다.

Multi Thread의 단점
멀티 스레드의 단점은 다음과 같다.
- 서로 다른 스레드가 데이터 영역과 힙 영역을 공유하기 때문에 다른 스레드에서 사용 중인 변수에 접근하여 충돌이 발생할 수 있다.
- 동기화 작업이 필요하고 디버깅이 까다롭다.
- 동기화로 인해 병목 현상이 발생하여 성능이 저하될 수 있다.
- 불필요한 부분까지 동기화를 할 경우 전체 성능에 영향을 미치기 때문에 주의 깊은 설계가 필요하다.
- 하나의 스레드에 문제가 발생하면 전체 프로세스가 영향을 받는다.
Reference
'운영체제' 카테고리의 다른 글
| [운영체제] Thread(2) - Thread 동기화 (0) | 2022.03.11 |
|---|---|
| [운영체제] Thread(1) - Thread란? (0) | 2022.03.10 |
| [운영체제] Blocking / Non-Blocking, 동기 / 비동기 (0) | 2022.03.07 |