멀티프로세스란?
하나의 어플리케이션을 여러 개의 프로세스로 구성하여 다수의 프로세서(CPU)가 각 프로세스를 병렬처리(즉 동시 처리)하는 것을 말한다.
각 프로세스 간 메모리 구분이 필요하거나 독립된 주소 공간을 가져야 될 경우에 사용한다.
멀티프로세스의 장점
- 프로세스 간 독립된 구조로 안정성이 높다.
- 여러 프로세스가 같이 작업하고 있기 때문에 하나에 문제가 생겨도 다른 프로세스에 영향을 주지 않기 때문에 작업이 정지 되지 않는다.
- 여러개의 프로세스가 처리되어야 할 때 동일한 데이터를 사용하고 이러한 데이터를 하나의 디스크에 두고 모든 프로세서(cpu)가 이를 공유하면 비용적으로 저렴하다.
멀티프로세스의 단점
- 독립 된 메모리 영역이기 때문에 작업량이 많을수록 Context Switching이 자주 일어나기 때문에 오버헤드가 발생하여 성능 저하가 발생 할 수 있다.
- Context Switching 과정에서 캐시 메모리 초기화 등 무거운 작업이 진행 되고 시간이 소모되는 등 오버헤드가 발생한다.
- Context Switching(문맥교환)란
-- cpu에서 여러 프로세스를 돌아가면서 작업을 처리하는데 이 과정으로 동작중인 프로세스가 대기하면서 해당 프로세스 상태를 보관하고, 대기하고 있던 다음 순서의 프로세스가 동작하면서 이전에 보관했던 프로세스의 상태를 복구하는 작업을 말한다.- Overhaed란?
-- 프로그램 실행흐름 도중 동떨어진 위치의 코드를 실행시켜야 할
때 추가적으로 시간,메모리,자원이 사용 되는 현상을 말한다.
즉 특정 기능을 수행하는데 드는 간접적인 시간,메모리 등을 말한다.- 각 프로세스가 독립적인 메모리 공간을 가지기 때문에 결과적으로 메모리 사용량이 증가하게 된다.
멀티스레드란?
하나의 프로세스에 여러 스레드로 자원을 공유하며 작업을 나누어 수행하는 것을 말한다.
즉 자신이 속한 프로세스의 메모리를 공유한다.
멀티스레드 장점
- 시스템 자원 소모가 감소하여 자원의 효율성이 증대한다.
- 시스템 처리율이 향상된다.
- 간단한 통신 방법으로 프로그램 응답시간이 단축 된다.
- 스레드 사이 작업량이 적어 Context Switching이 빠르다.
멀티스레드 단점
- 하나의 스레드에 문제가 생기면 전체 프로세스가 영향을 받는다.
- 단일 프로세스 시스템의 경우 효과를 기대하기가 어렵다.
- 자원을 공유하기 때문에 동기화 문제가 발생할 수 있다.
- 주의 깊은 설계가 필요하고 디버깅이 어렵다.
- 불필요한 부분까지 동기화하면, 대기시간으로 인해 성능 저하가 발생된다.
멀티프로세스와 멀티스레드
- 안정성
- 멀티 스레드: 낮다. 멀티 프로세스: 높다.
- 멀티 프로세스는 하나의 프로세스에 문제가 생기더라도 다른 프로세스에 영향을 주지 않는다. 안정성이 높다.
- 멀티 스레드는 하나의 스레드에 문제가 생기면 프로세스 전체의 영향을 받기 때문에 안정성이 낮다.
- 메모리 공간
- 멀티 스레드 < 멀티 프로세스
- 멀티 프로세스는 멀티 스레드 보다 많은 메모리 공간을 차지한다.
- 멀티 프로세스,멀티 스레드 두 방법 모두 동시에 여러 작업을 수행하는 점에서 동일하지만 각각의 장단점이 있기 때문에 시스템에 따라 적합한 동작 방식을 선택하는 것이 좋다.
🙇 참고 사이트 🙇
https://carnival.tistory.com/46 https://inpa.tistory.com/entry/%F0%9F%91%A9%E2%80%8D%F0%9F%92%BB-multi-process-multi-thread https://donggu1105.tistory.com/175