단답형:
멀티프로세스는 여러 독립적인 메모리 공간을 가진 프로세스들로 구성되며, 멀티스레드는 단일 프로세스 내에서 메모리를 공유하는 여러 스레드로 구성됩니다. 멀티프로세스는 자원 분리가 잘 되어 있어 안정성이 높지만, 멀티스레드는 경량이며 자원 공유로 인한 효율성이 높습니다.
상세한 설명:
1. 멀티프로세스 (Multiprocessing):
- 독립적 메모리: 각 프로세스는 독립된 메모리 공간과 자원을 가집니다. 이로 인해 한 프로세스에서 발생한 오류가 다른 프로세스에 영향을 주지 않습니다.
- 자원 분리: 각 프로세스는 독립적으로 실행되므로, 자원 분리가 잘 되어 있어 안정성이 높습니다.
- 통신 오버헤드: 프로세스 간의 통신은 IPC(Inter-Process Communication)를 통해 이루어지며, 이로 인한 오버헤드가 발생할 수 있습니다.
2. 멀티스레드 (Multithreading):
- 메모리 공유: 하나의 프로세스에 여러 스레드로 메모리와 자원을 공유합니다. 이로 인해 스레드 간의 통신이 빠르며, 자원 사용이 효율적입니다.
- 경량: 스레드는 프로세스에 비해 생성 및 종료 비용이 낮습니다. 따라서 빠른 컨텍스트 스위칭(Context Switching)이 가능합니다.
- 동시 접근 문제: 메모리 공유로 인해 동기화 문제(병목현상, 데드락 등)가 발생할 수 있다. 이를 해결하기 위해 동기화 메커니즘을 사용해야 합니다.