멀티스레딩 (Multithreading)
- 하나의 프로세스 내에서 여러 스레드를 생성하여 작업을 동시에 수행하는 것
스레드는 프로세스의 자원을 공유하며 메모리 공간을 공유하는 특성을 가진다
멀티프로세싱 (Multiprocessing)
- 여러 독립적인 프로레스를 생성하여 각각의 프로세스가 독립적으로 작업을 수행하는 것
프로세스는 각각 자체 메모리 공간을 가지고 있으며 프로세스 간의 통신을 위해 별도의 메커니즘이 필요하다
차이점
1. 자원공유
멀티스레딩 : 스레드는 하나의 프로세스 내에서 실행되기 떄문에 메모리와 자원을 공유할 수 있다.
이로 인해 데이터 공유가 빠르고 효율적이지만 공유 자원에 대한 동시 접근으로 인한
동기화 문제가 발생할 수 있다.
멀티프로세싱 : 프로세스는 독립적으로 실행되기 때문에 자원을 공유하기 위해서는 명시적인
IPC(inter-Proccess Communication) 메커니즘이 필요하다.
각 프로세스는 자체 메모리 공간을 가지고 있으므로 데이터 공유가 느리고 비효율적일 수 있다.
2. 성능
멀티스레딩 : 스레드 간의 컨텍스트 전환이 비교적 빠르기 때문에 작업의 시작 및 종료 시간이 빠르며 메모리
사용량도 적지만 스레드 간의 동기화 및 상호작용에 대한 관리가 필요하며 잘못된 동기화로 인한
문제가 발생할 수 있다.
멀티프로세싱 : 프로세스 간의 컨텍스트 전환이 느리기 때문에 작업의 시작 및 종료 시간이 상대적으로 오래 걸릴
수 있다.
프로세스 간의 통신 및 동기화 비용이 추가로 발생한다.