Comunicazione tra processi

Da Wikipedia, l'enciclopedia libera.

bussola Disambiguazione – Se stai cercando altri significati della sigla IPC, vedi Istruzioni Per Ciclo.

L'espressione comunicazione tra processi (in inglese Inter-Process Communication o IPC) si riferisce a tutte quelle tecnologie software il cui scopo è consentire a diversi processi di comunicare tra loro scambiandosi dati e informazioni. I processi possono risiedere sullo stesso computer o essere distribuiti su una rete. Tutti i sistemi operativi multitasking forniscono qualche meccanismo fondamentale di IPC; altri meccanismi più sofisticati o orientati a particolari tipi di sistemi software possono essere forniti da tecnologie middleware, linguaggi di programmazione o a livello applicativo, basandosi sui meccanismi forniti dal sistema operativo.

Nel caso specifico di processi distribuiti, i meccanismi di comunicazione fra processi sono in effetti protocolli di rete. Si deve notare, tuttavia, che non tutti i protocolli di rete sono meccanismi di IPC; ai livelli bassi della gerarchia ISO OSI, infatti, il concetto di processo non compare, e i protocolli si limitano a farsi carico del trasferimento di dati fra computer. L'esempio forse più noto di protocollo di rete per lo scambio di informazioni fra processi è TCP; per un esempio di IPC a livello di linguaggio di programmazione si pensi a RMI di Java. Di norma, i meccanismi di IPC per processi distribuiti permettono la comunicazione anche fra processi residenti sulla stessa macchina.

Altri esempi vari di meccanismi utilizzabili per l'IPC includono i socket Unix, le porte del Kernel Mach, il middleware CORBA, e la tecnologia Component Object Model di Microsoft.

In senso lato si può intendere come meccanismo di comunicazione fra processi anche la semplice clipboard che consente a un utente di copiare e incollare informazioni da una finestra a un'altra, o l'uso di file, che un processo scrive e un altro legge; tuttavia, si parla di IPC in senso stretto solo per quei meccanismi che possono essere usati dal software senza intervento manuale umano e che non memorizzano i dati su memorie di massa.

Tabella (non esaustiva) di tecnologie e paradigmi di IPC:

Metodo Sistemi operativi o altri ambienti in cui è disponibile
Segnale Tutti i sistemi POSIX
Pipe anonima Tutti i sistemi POSIX e Microsoft Windows
Pipe con nome Tutti i sistemi POSIX e Microsoft Windows
Scambio di messaggi
(nessuna condivisione)
Viene usata nel paradigma MPI, nell'RMI di Java, in CORBA e altri
Memoria condivisa o
File mappato in memoria (MMF)
Tutti i sistemi POSIX e Microsoft Windows
Coda di messaggi Molti sistemi operativi
Chiamata di procedura remota (RPC) Molti sistemi operativi
Mailbox Molti sistemi operativi
Socket Tutti i sistemi operativi con supporto di rete

[modifica] Collegamenti esterni

Strumenti personali