멀티 프로세스
멀티 프로세스란, 두 개 이상의 프로세스를 동시에 처리하는 것을 말한다. 각 프로세스 간의 메모리 구분이 필요하거나, 독립된 주소 공간을 가져야 할 경우 사용한다.
프로세스 간 통신을 위해서는 IPC를 통해야 한다.
장점
- 한 프로세스가 문제가 생겨도 다른 프로세스에 영향을 주지 않아, 다른 프로세스에 영향이 확산되지 않는다.
- 구현이 비교적 간단하다.
단점
- 독립된 메모리 영역을 갖기 때문에 작업량이 많을수록 Context Switching이 자주 일어나서 오버헤드가 발생한다.
Context switching 과정에서 캐시 메모리 초기화 등 무거운 작업이 진행되고 시간이 소모 되는 등의 오버헤드가 발생한다. - 성능저하의 우려가 있다.
멀티 스레드
멀티 스레드란 하나의 프로세스에서 여러 스레드로 자원을 공유하며 작업을 나누어 수행하는 것을 말한다.
일반적으로 멀티스레드르 사용하는 이유는 사용자와 상호작용하는 애플리케이션에서 단일 스레드로 Network 또는 DB 와 같은 긴 작업(Long-running task) 을 수행하는 경우 해당 작업을 처리하는 동안 사용자와 상호작용이 불능인 상태가 될 수 있기 때문이다.
장점
- 멀티 프로세스에 비해 메모리 자원소모가 줄어든다. (비용이 적다)
프로세스를 생성하여 자원을 할당하는 시스템 콜이 줄기 때문 - 힙 영역을 통해 스레드 간 통신이 가능하기 때문에 프로세스 간 통신보다 간단하다.
- 스레드의 컨텍스트 스위칭은 프로세스의 컨텍스트 스위칭보다 빠르다.
- 멀티프로세서 구조에서 각각의 스레드가 다른 프로세서에서 병렬로 수행될 수 있다.
단점
- 하나의 스레드가 비정상적으로 동작하면 다른 스레드도 종료될 수 있다. (Code/Data/Heap 영역 내용을 공유하기 때문에)
- 자원을 공유하는 데 있어 동기화 문제가 발생할 수 있다. (병목현상, 데드락 등)
- 불필요한 부분까지 동기화가 되면 성능 저하가 발생할 수 있어 주의 깊은 설계가 필요하다.
- 구현 및 테스트, 디버깅이 어렵다.
멀티 프로세스 vs 멀티 스레드
종류 | 장점 | 단점 |
멀티 프로세스 | 하나의 프로세스가 죽어도 다른 프로세스에게는 영향을 끼치지 않는다. | 각각 독립된 메모리 영역을 갖고 있어 작업량이 많을 수록 오버헤드가 발생한다. Context Switching으로 인한 성능 저하를 유발한다. |
멀티 스레드 | 프로세스의 응답시간이 단축되고 시스템의 처리율이 향상된다. 또한 코드영역과 데이터 영역을 공유하기 떄문에 자원 소모가 적다. 스레드 간의 통신 비용이 적게 든다. |
프로그램 디버깅이 어렵고 하나의 스레드에 문제가 생기면 전체적인 프로세스에 영향을 끼치게 된다. |
출처
'Computer Science > 운영체제' 카테고리의 다른 글
캐시 메모리 (0) | 2023.03.18 |
---|---|
가상 메모리(Virtual Memory) (0) | 2023.03.18 |
교착상태와 기아상태 (1) | 2023.03.18 |
운영체제란 (0) | 2023.03.17 |
프로세스와 스레드 (0) | 2023.03.17 |