본문 바로가기
카테고리 없음

멀티스레딩 (Multithreading)과 멀티프로세싱 (Multiprocessing)의 차이점은 무엇인가요?

by Node.js 주니어 개발자 귤 2023. 5. 22.

멀티스레딩 (Multithreading)

 - 하나의 프로세스 내에서 여러 스레드를 생성하여 작업을 동시에 수행하는 것

    스레드는 프로세스의 자원을 공유하며 메모리 공간을 공유하는 특성을 가진다

 

멀티프로세싱 (Multiprocessing)

 - 여러 독립적인 프로레스를 생성하여 각각의 프로세스가 독립적으로 작업을  수행하는 것

    프로세스는 각각 자체 메모리 공간을 가지고 있으며 프로세스 간의 통신을 위해 별도의 메커니즘이 필요하다

 

차이점

 1. 자원공유

     

     멀티스레딩 : 스레드는 하나의 프로세스 내에서 실행되기 떄문에 메모리와 자원을 공유할 수 있다.

                         이로 인해 데이터 공유가 빠르고 효율적이지만 공유 자원에 대한 동시 접근으로 인한

                         동기화 문제가 발생할 수 있다.

 

     멀티프로세싱 : 프로세스는 독립적으로 실행되기 때문에 자원을 공유하기 위해서는 명시적인

                            IPC(inter-Proccess Communication) 메커니즘이 필요하다. 

                            각 프로세스는 자체 메모리 공간을 가지고 있으므로 데이터 공유가 느리고 비효율적일 수 있다.

 

 2. 성능

 

     멀티스레딩 : 스레드 간의 컨텍스트 전환이 비교적 빠르기 때문에 작업의 시작 및 종료 시간이 빠르며 메모리

                         사용량도 적지만 스레드 간의 동기화 및 상호작용에 대한 관리가 필요하며 잘못된 동기화로 인한

                         문제가 발생할 수 있다.

 

     멀티프로세싱 : 프로세스 간의 컨텍스트 전환이 느리기 때문에 작업의 시작 및 종료 시간이 상대적으로 오래 걸릴

                            수 있다.

                            프로세스 간의 통신 및 동기화 비용이 추가로 발생한다.