멀티 프로세스
멀티 프로세스란?
- 멀티 프로세스란 **
하나의 애플리케이션을 여러 개의 프로세스로 구성
**하여, 각 프로세스가 하나의 작업을 수행하도록 하는 방법이다.
(MSA 같이 애플리케이션을 여러 프로세스로 작게 쪼개기..)
장점
- 안정성이 좋다. 여러개의 자식 프로세스 중 하나에 문제가 발생해도, 다른 자식 프로세스에 영향이 확산되지 않는다.
- 구현이 비교적 간단하고, 각 프로세스들이 독립적으로 동작하며 자원의 서로 다르게 할당된다.
단점
- 프로세스 간 통신을 하기 위해서는 IPC를 통해야 한다.
- 각 프로세스는 독립적인 주소공간을 가지기 때문에 IPC(외부 협력 통신)을 통해 소통해야한다.
- 메모리 사용량이 많다.
- 스케쥴링에 따른 Context Switch이 많아지고, 성능 저하의 우려가 있다.
멀티 스레드
멀티 스레드란?
하나의 애플리케이션을 여러 개의 스레드를 만들어
각 스레드가 하나의 작업을 처리하는 방법이다.
- 멀티 스레드를 사용하는 이유는, I/O나 네트워크 작업 같이 시간이 오래 걸리는 작업을 수행할 때 다른 스레드를 수행하여 효율적으로 프로세스를 처리하기 위함이다.
- 단일 스레드의 경우 IO등 시간이 오래걸리는 작업을 할 때, 계속 blocked되어 있다면 사용자입장에서는 프로세스가 먹통인 상태니까.. 이를 방지하기위함..!
장점
- 응답성이 좋다. 프로그램의 일부분(자식 스레드)이 오류 또는 긴 작업으로 인해 중단되어도 프로그램이 계속 적으로 수행된다.
- 자원 공유가 쉽다. 스레드들은 부모 프로세스의 자원과 메모리를 공유 할 수 있다.
- 프로세스를 할당하는 것보다 스레드를 할당하는 것이 비용이 적다.
- (같은 프로세스의 스레드들은 code/data/heap을 공유하므로 stack만 갈면 되니까)