OS

[OS] 멀티프로세스 대신 멀티쓰레드 사용이유

집한구석 2021. 11. 6. 17:48
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