멀티 프로세스(Multi Process) vs 멀티 스레드(Multi Thread)
멀티 프로세스와 멀티 스레드의 차이
프로세스와 스레드에 관한 내용은 이전글을 참조해주세요
멀티 프로세스(Multi Process)
두개 이상 다수의 프로세서(CPU)가 각자 독립된 메모리 영역을 가지고 동시에 하나 이상의 작업을 처리하는 것이다.
멀티 프로세스의 장점
독립된 구조로 안정성이 높다. 하나의 프로세스가 죽더라도 다른 프로세스에 영향을 끼치지 않고 정상적으로 수행
멀티 프로세스의 문제점
프로세스 간의 Context Switching시 단순히 CPU 레지스터 교체 뿐만 아니라 RAM과 CPU사이의 캐시 메모리에 대한 데이터까지 초기화되므로 오버헤드가 크고 느리다.
멀티 스레드(Multi Thread)
하나의 프로세스에 여러 스레드로 자원을 공유하며 작업을 나누어 수행하는 것이다. 쉽게 말하면, 하나의 프로그램안에서 여러 작업을 해결하는 것
멀티 스레드의 장점
- 자원의 효율성 증대
- 멀티 프로세스로 실행되는 작업을 멀티 스레드로 실행할 경우, 프로세스를 생성하여 자원을 할당하는 시스템 콜이 줄어들어 자원을 효율적으로 관리할 수 있다.
- 멀티 스레드는 프로세스 내의 메모리를 공유하기 때문에 데이터를 주고 받는 것이 간단해져 시스템 자원 소모가 적다.
- 처리 비용 감소 및 응답 시간 단축
- 프로세스 간의 통신(IPC) 보다 스레드 간의 통신의 비용이 적어서 작업들 간의 통신 비용이 줄어듬(Stack 영역빼고 다 공유하기 때문)
- 프로세스간 전환 속도보다 스레드 간의 전환 속도가 빠름
멀티 스레드의 문제점
자원을 공유하기 때문에 동기화 문제가 생길 수 있다. 그래서 동기화 작업을 통한 작업 처리 순서를 컨트롤 해야된다. 또한 하나의 스레드에 문제가 생기면 전체 프로세스가 영향을 받을 수 있다.
멀티 프로세스 vs 멀티 스레드
둘다 동시에 여러 작업을 수행한다는 점에서는 같다. 그러나 멀티 프로세스 같은 경우 하나의 프로세스가 죽더라도 다른 프로세스에는 영향을 끼치지 않아 안정성이 높지만, 멀티 스레드보다 시간과 자원을 많이 잡아먹는 단점이 있다. 반대로 멀티 스레드 같은 경우는 하나의 스레드가 죽으면 전체 스레드가 종료될 수 있으며 동기화 문제를 갖고 있지만, 멀티 프로세스보다 적은 공간 차지와 빠른 처리의 장점이 있다. 따라서 적용할 시스템의 특징에 따라 적합한 방식을 선택해야한다.
*틀린 부분이 있으면 언제든지 말씀해 주시면 공부해서 수정하겠습니다.