SMP(통 메모리 이용 방식)은 프로세스의 수가 CPU보다 많은 경우(대부분의 경우가 이렇다.), 나머지 프로세스들은 실행되기 위해서 CPU를 사용할 수 있을 때까지 기다려야 한다.
MPP(분산 메모리 시스템)은 동시에 많은 프로세스가 각각 CPU 프로세스 메모리 내에 존재하며, 다른 대기 중인 프로세스가 있을 때 미리 할당된 CPU를 사용하도록 한다. (Connection Pool)과 동일. (다만 미리 할당된 노드 개수가 모두 사용 중이면 병목(정책에 따라 대기 상황 또는 새로 connection 생성 비용)이 발생한다.)
최종 정리하자면
Concurrent(동시성) programming은 일반적으로 정의한 작업이 어떤 순서로든 발생할 수 있는 환경을 의미합니다. 하나의 작업이 다른 작업 전후에 발생할 수 있으며 일부 또는 모든 작업을 동시에 수행할 수 있습니다.
Parallel(병렬) programming은 다른 프로세서에서 동시 작업을 동시에 실행하는 것을 구체적으로 말합니다. 따라서 모든 병렬 프로그래밍은 동시이지만 모든 동시 프로그래밍이 병렬인 것은 아닙니다.
즉, 잘 작성된 동시 프로그램(순서 상관없이 일정한 계산)은 멀티 프로세서에서 효율적으로 병렬로 실행될 수 있습니다.