2. Thread
<aside>
💡 Process vs Thread
</aside>
Thread는 프로세스의 실행의 단위
⇒ Heap, Data, Text 영역은 공유하며 Stack만 할당 받음, IPC 없이도 쓰레드 간 자원의 접근 수정 가능
<aside>
💡 Multi Thread
</aside>
멀티 프로세스의 단점을 보완하기 위해 나온것
-
Multi Process
- 장점: 독립적으로 일을 수행하므로 서로 영향을 끼치지 않는다
- 단점: Context Switching, IPC에서의 오버헤드가 크다
-
Multi Thread
- 장점: 프로세스보다 메모리 사용이 적고, 데이터 통신이 빠르고, 수행속도가 빠름
- 단점: 자원 공유 ( Syncronization = 동기화 필요)
<aside>
💡 User-level Thread vs Kernel-level Thread
</aside>
- User가 생성한 것과 Kernel이 생성한 것으로 구분됨
- User-level 스레드와 Kernel-level 스레드의 관계
- 다대일 모델 ⇒ 효율적이나 한 스레드가 block된다면 전체 스레드가 봉쇄되어 병렬성 X
- 일대일 모델 ⇒ 많은 병렬성을 제공하지만 쓰레드가 많다면 비용이 많이 듬
- 다대다 모델 ⇒ 위 두 모델을 해결