멀티스레딩과 멀티프로세싱은 병렬 처리 방법을 통해 프로그램의 성능을 향상시키는 두 가지 기법입니다. 이 두 가지 방법의 주요 차이점은 프로세스와 스레드의 차이에 있습니다.
멀티프로세싱은 여러 개의 독립된 프로세스를 동시에 실행하는 것을 말합니다. 각 프로세스는 독립된 메모리 공간과 자원을 가지며, 하나의 시스템에서 여러 개의 CPU 또는 여러 개의 코어를 사용하여 프로세스를 병렬로 실행합니다. 멀티프로세싱을 사용하면 CPU의 이용률을 높일 수 있습니다.
멀티프로세싱은 각 프로세스가 독립적인 메모리 공간을 가지기 때문에, 하나의 프로세스에서 발생한 오류가 다른 프로세스에 영향을 미치지 않습니다. 그러나 이 방식은 프로세스 간의 통신(IPC)을 위해 추가적인 메커니즘이 필요하며, 프로세스를 생성하고 제거하는 데 상대적으로 많은 오버헤드가 발생합니다.
멀티스레딩은 하나의 프로세스 내에서 여러 개의 스레드를 동시에 실행하는 것을 말합니다. 모든 스레드는 해당 프로세스의 메모리 공간과 자원을 공유하므로, 스레드 간의 통신은 비교적 쉽습니다. 이 방식은 프로세스의 생성과 제거에 비해 스레드의 생성과 제거가 더 적은 리소스를 사용합니다.
하지만 멀티스레딩은 스레드가 같은 메모리 공간을 공유하기 때문에, 하나의 스레드에서 발생한 오류가 전체 프로세스에 영향을 줄 수 있습니다. 또한 공유 자원에 대한 동기화 문제를 주의해야 합니다.
한 줄 요약 : 멀티프로세싱과 멀티스레딩 모두 병렬 처리를 위한 기법입니다.