1. 멀티프로세스
* 멀티프로세싱
- 하나의 응용프로그램을 여러 개의 프로세스로 구성하여 각 프로세스가 하나의 작업을 처리하는 것을 의미한다.
- 각 프로세스들은 독립적으로 동작하며 자원이 서로 다르게 할당된다.
* 장점
- 여러 자식 프로세스 중 하나에 문제가 발생하면, 다른 프로세스에 영향없이 그 프로세스만 죽는다. 따라서 안정적으로 프로그램을 운용할 수 있다.
- 구현이 비교적 간단하다.
* 단점
- 메모리 사용량이 많다.
- 프로세스 간 공유를 하려면 통신을 해야하므로 까다롭다.
- 스케줄링에 따른 Context Switching이 잦아 성능저하의 우려가 있다. 스위칭은 캐시 메모리 초기화 등 무거운 작업이 진행되므로 많은 시간을 낭비한다.
2. 멀티스레드
* 멀티스레딩
- 최근에 가장 흔히 사용되는 병렬처리 프로그래밍 기법이다.
- 하나의 응용프로그램을 여러 개의 스레드로 구성하여 각 스레드가 하나의 작업을 처리하도록 한다.
- 많은 운영체제들이 멀티 프로세싱을 지원하지만 멀티 스레딩을 기본으로 한다.
* 장점
- 스레드는 부모 프로세스의 자원과 메모리를 공유하므로 자원 공유가 쉽다. 스레드 간 데이터의 공유가 간단해지므로 처리량을 늘릴 수 있다. 스레드 사이의 작업량이 줄어들기 때문에 Context Switching도 빠르게 할 수 있다.
- 프로세스를 할당하는 것에 비해 비용이 적다. 프로세스를 생성하여 자원을 할당하는 시스템 콜이 줄어들기 때문에 자원을 효율적으로 관리할 수 있다.
* 단점
- 너무 많은 스레드 사용은 오버헤드를 발생시킬 수 있다.
- 단일 프로세스 시스템에서는 효과가 거의 없다.
- 구현 및 테스트, 디버깅이 매우 어렵다.
- 자식 스레드 중 하나에 문제가 생기면 전체 프로세스에 영향을 줄 수 있다.
3. 비교
- 위에서 알 수 있듯 멀티 스레드가 멀티 프로세스에 비해 이점이 많다.
- 먼저 자원의 효율성이 멀티스레드가 좋다. 프로세스를 생성하여 자원을 할당하는 비용이 줄어들고, 메모리 공유를 통해 데이터를 주고 받는 것이 간단해지기 때문이다.
- 처리 비용 및 시간도 멀티스레드가 더 적다. 스레드는 Context Switching시 스택 영역만 처리하면 되기 때문에 훨씬 빠른 스위칭을 하게되고, 통신 비용도 적다.
- 그러나 스레드는 동일한 공간을 공유하므로 안정성 문제는 피할 수 없다.
- 참고로 멀티 스레딩을 지원하는 운영체제에서는 프로세스가 아닌 스레드 단위로 스케줄링을 하여 스레드에 CPU를 할당한다.
참고
'Computer Science > Operating System' 카테고리의 다른 글
<운영체제> 프로세스 스케줄링 (0) | 2021.08.20 |
---|---|
<운영체제> 프로세스와 스레드 (0) | 2021.08.19 |
<운영체제> 프로세스 메모리 (0) | 2021.08.16 |