Dopo aver visto come vari processi cooperanti possono sincronizzarsi fra loro, vediamo come possono comunicare. Tipicamente, le primitive di Inter Process Comunication (IPC) possono essere catalogate secondo vari criteri: in particolare, seguendo due criteri fra loro ortogonali, si può distinguere fra comunicazione sincrona (primitive bloccanti) o asincrona (primitive non bloccanti) e diretta (il processo destinatario e la sorgente sono specificati direttamente nelle operazioni di IPC) o indiretta (le comunicazioni non avvengono direttamente, attraverso un'entità intermedia, talvolta detta porta o un canale).
Nei sistemi Unix, nati proprio supportando il paradigma di programmazione a scambio di messaggi, la comunicazione avviene attraverso primitive IPC indirette, generalmente asincrone.