프로세스 VS 스레드 차이점
- 프로세스는 자신만의 고유 공간과 자원을 할당받아 사용
- 스레드는 다른 스레드와 공간, 자원을 공유하면서 사용
멀티 프로세스 대신 멀티 스레드를 사용하는 이유
- 자원의 효율성 증대
- 멀티 프로세스로 실행되는 작업을 멀티 스레드로 실행할 경우 프로세스를 생성하여 자원을 할당하는 시스템 콜이 줄어들어 자원을 효율적으로 관리할 수 있음
- 프로세스 간의 Context Switching 시 단순히 CPU 레지스터 교체 뿐만 아니라 RAM과 CPU 사이의 캐시 메모리에 대한 데이터까지 초기화되므로 오버헤드가 큼
- 스레드는 프로세스 내의 메모리를 공유하기 때문에 독립적인 프로세스와 달리 스레드 간 데이터를 주고 받는 것이 간단해지고 시스템 자원 소모가 감소
- 멀티 프로세스로 실행되는 작업을 멀티 스레드로 실행할 경우 프로세스를 생성하여 자원을 할당하는 시스템 콜이 줄어들어 자원을 효율적으로 관리할 수 있음
- 처리 비용 감소 및 응답 시간 단축
- 프로세스 간의 통신(IPC)보다 스레드 간의 통신 비용이 적음
- 스레드는 Stack 영역을 제외한 모든 메모리를 공유하기 때문
- 프로세스 간의 전환 속도보다 스레드 간의 전환 속도가 빠름
- Context Switching 시에 Stack영역만 처리하면 되기 때문
- 프로세스 간의 통신(IPC)보다 스레드 간의 통신 비용이 적음