두 방법은 동시에 여러 작업을 수행한다는 측면에서 유사한 면이 있습니다. 적용할 시스템에 따라 두 방법의 장단점을 고려하여 적합한 방식을 선택해야 합니다. 메모리 구분이 필요할때는 멀티 프로세스가 유리합니다. 반면에 Context switching이 자주 일어나고 데이터 공유가 빈번한 경우, 그리고 자원을 효율적으로 사용해야 되는 경우에는 멀티 스레드를 사용하는 것이 유리합니다.
멀티 프로세스 대신 멀티 스레드로 구현할 경우, 메모리 공간과 시스템 자원 소모가 줄어들게 됩니다. 하지만 멀티 스레드를 사용할 때는 스레드간 자원을 공유하기 때문에 동기화 문제가 발생할 수 있기 때문에 이를 고려한 프로그램 설계가 필요합니다.
또한 프로세스 간의 통신(IPC)보다 스레드 간의 통신 비용기 적기 때문에 통신으로 인한 오버헤드가 적습니다.
멀티 프로세스를 이용하던 작업을 멀티 스레드로 구현할 경우, 메모리 공간과 시스템 자원 소모가 줄어들게 됩니다. 또한 프로세스를 생성하고 자원을 할당하는 등의 system call을 생략할 수 있기 때문에 자원을 효율적으로 관리할 수 있습니다. 뿐만 아니라 Context switching 시 캐시 메모리를 초기화할 필요가 없어서 속도가 빠릅니다.
데이터를 주고 받을 때를 비교해보면, 프로세스간의 통신보다 멀티 스레드간의 통신 비용이 적기 때문에 통신으로 인한 오버헤드가 적습니다.
스레드간의 자원 공유 시 동기화문제가 발생할 수 있어서 프로그램 설계 시 주의가 필요하고, 스레드 문제가 생기면 프로세스 내의 다른 스레드에도 문제가 생길 수 있습니다.
Multi thread (0) | 2024.03.06 |
---|---|
Multi process (1) | 2024.03.06 |
Process (0) | 2024.03.06 |