멀티 프로세스
멀티 프로세스(multi process)는 응용 프로그램 하나를 여러 프로세스로 구성하는 것을 의미한다. 멀티 프로세스 환경에서는 한 프로세스가 죽어도 다른 프로세스에 영향을 주지 않는다. 그래서 응용 프로그램을 프로세스 하나로 구성하는 것보다 여러 개로 구성하는 것이 안정적이다.
하지만 시간과 메모리 공간을 많이 사용한다는 단점이 있다. 앞서 설명했듯이 CPU는 하나의 작업만 처리할 수 있다. 그래서 여러 프로세스를 처리하려면 CPU에서 처리 중인 프로세스를 교체하는 콘텍스트 스위칭 작업이 이루어져야 한다. 이때 CPU에서 기존에 처리하던 프로세스가 할당받은 메모리 영역을 다른 프로세스에서 사용할 수 있게 교체하면서 시간과 메모리가 필요한데, 이를 오버헤드(overhead)라고 한다.
또한, 프로세스는 독립적인 메모리를 할당받는다. 따라서 프로세스 간에 공유할 자원이 있다면 IPC(Inter Process Communication)를 통해 프로세스 간에 자원을 공유해야 한다. 그래서 공유할 메모리를 직접 참조하는 것보다 비효율적이다.
▲ 그림 1-15 멀티 프로세스 구조