728x90
멀티 프로세스 대신 멀티 스레드를 사용하는 이유
- 자원의 효율성 증대
- 처리 비용 감소 및 응답 시간 단축
자원의 효율성 증대
- 멀티 프로세스로 실행되는 작업을 멀티스레드 실행할 경우, 프로세스를 생성하여 자원을 할당하는 시스템 콜이 줄어들어 자원을 효율적으로 관리할 수 있음 (프로세스 간의 Context Switching시 단순히 CPU 레지스터 교체 뿐만 아니라 RAM과 CPU 사이의 캐시 메모리에 대한 데이터까지 초기화되므로 오버헤드가 크기 때문)
- 스레드는 프로세스 내의 메모리를 공유하기 때문에 독립적인 프로세스와 달리 스레드 간 데이터를 주고 받는 것이 간단해지고 시스템 자원 소모가 줄어들게 됨
처리 비용 감소 및 응답 시간 단축
- 프로세스 간의 통신(IPC)보다 스레드 간의 통신의 비용이 적으므로 작업들 간의 통신의 부담이 줄어듬 (스레드는 Stack영역을 제외한 모든 메모리를 공유하기 때문에)
- 프로세스 간의 전환속도보다 스레드 간의 전환속도가 빠름 (Context Switching시 스레드는 Stack 영역만 처리하기 때문)
멀티쓰레드 주의할 점
- 동기화 문제
- Context Switching시 스레드는 Stack 영역만 처리하기 때문
'OS' 카테고리의 다른 글
[OS] 외부 단편화 / 내부 단편화 (0) | 2021.11.07 |
---|---|
[OS] 동기화 객체의 종류 (0) | 2021.11.07 |
[OS] Thread Safe (0) | 2021.11.06 |
[OS] 데드락 (0) | 2021.11.06 |
[OS] Thread (쓰레드) (0) | 2021.10.03 |