장점
- 프로세스보다 메모리 공간과 시스템 자원 소모가 줄어든다.
- Heap 영역을 통해서 통신을 할 수 있다.(프로세스는 IPC)
- context switch는 프로세스 context switch 와 달리 캐시 메모리를 비울 필요가 없기 때문에 더 빠르다.
- 쓰레드는 공유하는 영역이 많기 때문에 컨텍스트 스위칭이 빠르다.
- 캐쉬는 CPU와 메인메모리 사이에 위치하며 CPU에서 한번 이상 읽어들인 메모리의 데이터를 저장하고 있다가, CPU가 다시 그 메모리에 저장된 데이터를 요구할 때, 메인메모리를 통하지 않고 데이터를 전달해 주는 용도이다.
- 프로세스 컨텍스트 스위칭이 일어났을 경우, 공유하는 데이터가 없으므로 캐쉬가 지금껏 쌓아놓은 데이터들이 무너지고 새로 캐쉬정보를 쌓아야 한다. 이것이 프로세스 컨텍스트 스위칭에 부담이 되는 요소이다.
- 반면, 쓰레드라면 저장된 캐쉬 데이터는 쓰레드가 바뀌어도 공유하는 데이터가 있으므로 의미있다. 그러므로 컨텍스트 스위칭이 빠른 것이다.
문제점
- 멀티 프로세스에서는 서로 공유하는 자원이 없었지만, 멀티 스레딩에서는 이를 신경써야 한다.
- 데이터와 힙 영역을 공유하기 때문에, 어떤 쓰레드에서 다른 쓰레드가 사용중인 변수나 자료구조에 접근할 수 있다.
- 따라서 이를 해결하기 위해 동기화 작업이 필요하다. Trade off 존재. 너무 엄격하게 하면 병목 현상, 너무 느슨하게 하면 동기화 문제 발생.
멀티 쓰레드 vs 멀티 프로세스
- 멀티 스레드는 멀티 프로세스보다 적은 메모리 공간을 차지하고 문맥 전환이 빠르다는 장점이 있지만, 오류로 인해 하나의 스레드가 종료되면 전체 스레드가 종료될 수 있다는 점과 동기화 문제를 안고 있다
- 멀티 프로세스 방식은 하나의 프로세스가 죽더라도 다른 프로세스에는 영향을 끼치지 않고 정상적으로 수행된다는 장점이 있지만, 멀티 스레드보다 많은 메모리 공간과 CPU 시간을 차지한다는 단점이 존재한다
- 결국 잘 선택해서 써라.
'CS > 운영체제' 카테고리의 다른 글
프로세스 상태 전이 (0) | 2023.09.16 |
---|---|
프로세스 스케줄러 (0) | 2023.09.15 |
Context Switching (0) | 2023.09.13 |
프로세스와 쓰레드의 차이 (0) | 2023.09.12 |
운영체제란? (0) | 2023.09.11 |