반응형
멀티 프로세스와 멀티 스레드
멀티 프로세스 ( Mutil - Process )
독립성
- 멀티프로세스는 각각의 프로세스가 독립적인 메모리 공간을 가지고 실행된다.
따라서 한 프로세스에서의 오류가 다른 프로세스에 영향을 미치지 않는다.
안정성
- 하나의 프로세스의 충돌 또는 오류로 인해 시스템 전체가 영향을 받지 않는다.
- 한 프로세스가 비정상 종료되더라도 다른 프로세스는 계속 실행된다.
병렬성
- 멀티프로세스는 여러 CPU 코어에서 병렬로 실행될 수 있으므로 병렬 처리를 구현하기 쉽다.
- 각 프로세스는 독립적으로 작업을 수행하며, 병렬 작업을 수행하기 위해 프로세스 간 통신(IPC)이 필요하다.
자원 소모
- 멀티프로세스는 각각의 프로세스가 자체 메모리 공간을 사용하므로 더 많은 메모리와 시스템 리소스를 필요로 한다.
멀티 스레드 ( Multi - Thread )
공유 메모리
- 멀티쓰레드는 하나의 프로세스 내에서 실행되며, 이들 쓰레드는 같은 메모리 공간을 공유한다.
따라서 데이터 공유 및 통신이 쉽고 빠르다.
경량성
- 쓰레드는 프로세스보다 더 가벼우며, 쓰레드 간 전환(스위칭)이 빠르다.
이로 인해 쓰레드 간 작업 분배 및 동기화가 더 효율적으로 이루어진다.
병렬성
- 멀티쓰레드는 동일한 프로세스 내에서 병렬 실행되므로 프로세스 간 통신이 필요하지 않습니다.
하지만 여러 쓰레드 간의 동시성 관리 및 동기화 문제가 발생할 수 있습니다.
안정성
- 한 쓰레드의 오류가 다른 쓰레드에 영향을 미칠 수 있으므로 쓰레드 간의 조심스러운 동기화가 필요하다.
따라서 프로그래밍이 더 복잡할 수 있다.
요약
멀티프로세스는 독립적인 메모리 공간을 가지며 안정성이 높고 자원 소모가 크지만, 병렬성이 용이하다.
멀티쓰레드는 같은 메모리 공간을 공유하고 경량성을 가지며 자원 효율성이 높지만, 동시성 관리가 복잡하고 오류가 전파될 수 있다. 선택은 프로젝트 요구사항과 상황에 따라 결정되어야 한다.
반응형
'[백엔드] 기술면접' 카테고리의 다른 글
[백엔드] 기술 면접 Top30 - #26 DB 로직 최소화 (60) | 2023.10.06 |
---|---|
[백엔드] 기술 면접 Top30 - #25 쿼리 최적화 (57) | 2023.10.05 |
[백엔드] 기술 면접 Top30 - #23 프로세스와 스레드의 차이 (56) | 2023.10.03 |
[백엔드] 기술 면접 Top30 - #22 TDD (81) | 2023.10.02 |
[백엔드] 기술 면접 Top30 - #21 CI/CD (73) | 2023.10.01 |