새소식

Interview

Multi Process vs Multi Thread에 대해 설명해주세요

  • -

멀티 프로세스와 멀티 스레드 모두 컴퓨팅의 효율성을 위한 병렬처리 기법입니다.

 

멀티 프로세스는 두 개 이상의 다수 프로세서(CPU)가 협력적으로 하나 이상의 작업을 동시에 처리하도록 하는 것이며
각 프로세스 간 메모리 구분이 필요하거나 독립된 주소 공간을 가져야 할 경우 사용합니다.

각 프로세스마다 독립된 구조이기 때문에 프로세스들 중 하나에 문제가 생겨도 다른 프로세스에 영향을 주지 않아 작업 속도가 느려질 수는 있겠지만 정지되는 문제는 발생하지 않습니다.

그러나 각 프로세스마다 독립된 메모리 영역을 갖고 있기 때문에 Context Switching이 자주 일어나서 주소 공간의 공유가 잦을 경우 오버헤드가 발생하여 성능저하가 발생할 수 있습니다.

 

+ Context Switching이란?

현재 진행하고 있는 Task(Process, Thread)의 상태를 저장하고 다음 진행할 Task의 상태 값을 읽어 적용하는 과정을 말합니다.

 

멀티 스레드는 하나의 프로세스 내에서 둘 이상의 스레드가 동시에 작업을 수행하는 것을 말합니다. 멀티 스레드는 각 스레드가 자신이 속한 프로세스의 메모리를 공유합니다.

각 스레드가 자신이 속한 메모리를 공유하기 때문에 시스템 자원의 낭비가 적고, 하나의 스레드가 작업을 할 때 다른 스레드가 별도의 작업을 수행할 수 있어 사용자와의 응답성이 좋습니다.
그러나 하나의 스레드에 문제가 생기면 전체 프로세스가 영향을 받게 됩니다.

 

Ex)

인터넷 익스플로러는 멀티 스레딩 방식으로 브라우저를 실행시키기 때문에 스레드에서 생긴 문제가 프로세스 전체 영향을 미쳐 하나의 탭이 멈추면 다른 탭도 멈추게 됩니다.

반면 크롬의 경우 멀티 프로세싱 방식으로 브라우저를 실행시키기 때문에 하나의 탭은 하나의 프로세스인 셈이여서 탭 하나에 문제가 생겨도 다른 탭에는 영향을 주지 않습니다.

 

 

CPU마다 프로세스를 두는 멀티 프로세스. 하나의 프로세스에서 여러개의 스레드를 두는 멀티 스레딩

 

 


https://murphymoon.tistory.com/entry/멀티프로세싱multiprocessing과-멀티스레딩multithreading의-차이점-OS-면접질문-2 https://wooody92.github.io/os/멀티-프로세스와-멀티-스레드/ https://nesoy.github.io/articles/2018-11/Context-Switching

728x90
Contents