Comunicazione tra processi (IPC) nel sistema operativo
⚡ Riepilogo intelligente
La comunicazione interprocesso (IPC) è un insieme di meccanismi del sistema operativo che consentono a processi e thread di scambiarsi dati, coordinare le attività e sincronizzare le azioni, sia che vengano eseguiti su un singolo computer sia su più macchine connesse in rete.
Che cos'è la comunicazione tra processi?
Comunicazione tra processi (IPC) Viene utilizzato per lo scambio di dati tra più thread in uno o più processi o programmi. I processi possono essere in esecuzione su un singolo computer o su più computer collegati in rete. L'acronimo IPC sta per comunicazione interprocesso.
Si tratta di un insieme di interfacce di programmazione che consentono a un programmatore di coordinare le attività tra diversi processi di programma, che possono essere eseguiti contemporaneamente in un sistema operativo. Ciò permette a un singolo programma di gestire molte richieste utente nello stesso momento.
Poiché ogni richiesta dell'utente può generare l'esecuzione di più processi nel sistema operativo, questi processi potrebbero dover comunicare tra loro. Ogni approccio IPC presenta vantaggi e limitazioni specifici, pertanto non è insolito che un singolo programma utilizzi diversi metodi IPC.
Approcci per la comunicazione tra processi
Ecco alcuni metodi importanti per la comunicazione tra processi:
Approcci di comunicazione tra processi
Pipe
Un tubo viene ampiamente utilizzato per la comunicazione tra due processi correlati. Si tratta di un metodo half-duplex, in cui il primo processo comunica con il secondo. Tuttavia, per ottenere una comunicazione full-duplex, è necessario un altro tubo.
Passaggio del messaggio
Si tratta di un meccanismo che permette ai processi di comunicare e sincronizzarsi. Tramite lo scambio di messaggi, i processi comunicano tra loro senza ricorrere a variabili condivise.
Il meccanismo IPC prevede due operazioni:
- Invia (messaggio) — la dimensione del messaggio può essere fissa o variabile
- Ricevi (messaggio)
Code di messaggi
Una coda di messaggi è un elenco collegato di messaggi archiviati all'interno del file Kernel. È identificato da un identificatore di coda di messaggi. Questo metodo offre la comunicazione tra processi singoli o multipli con capacità full-duplex.
Comunicazione diretta
In questo tipo di comunicazione tra processi, questi devono nominarsi esplicitamente a vicenda. In questo metodo, viene stabilito un collegamento tra una coppia di processi comunicanti e, tra ciascuna coppia, esiste un solo collegamento.
Comunicazione indiretta
La comunicazione indiretta si stabilisce solo quando i processi condividono una casella di posta comune. Ogni coppia di processi può condividere diversi collegamenti di comunicazione e un singolo collegamento può comunicare con molti processi. Il collegamento può essere bidirezionale o unidirezionale.
Memoria condivisa
La memoria condivisa è una regione di memoria condivisa tra due o più processi. Questa memoria deve essere protetta dall'accesso simultaneo mediante la sincronizzazione dei processi che la utilizzano.
FIFO
FIFO viene utilizzato per la comunicazione tra due processi non correlati. Si tratta di un metodo full-duplex, il che significa che il primo processo può comunicare con il secondo processo e viceversa.
Perchè l'IPC?
Ecco i motivi per cui si utilizza il protocollo di comunicazione interprocesso per la condivisione delle informazioni:
- Contribuisce ad accelerare la modularità.
- Accelerazione computazionale.
- Separazione dei privilegi.
- Convenienza.
- Aiuta i processi e il sistema operativo a comunicare e a sincronizzare le proprie azioni.
Termini utilizzati nell'IPC
Di seguito sono riportati alcuni termini importanti utilizzati nell'IPC:
Semaphores: Un semaforo è un meccanismo di segnalazione. Questo metodo del sistema operativo consente o nega l'accesso a una risorsa, a seconda di come è configurato.
Signals: Un segnale è un metodo di comunicazione tra più processi tramite la segnalazione. Il processo sorgente invia un segnale, che viene riconosciuto da un numero, e il processo di destinazione lo elabora.
Suggerimento di lettura: Cosa è Semaphore? Tipi binari e di conteggio con esempio
Cos'è come FIFOS e cosa è diverso da FIFOS
La tabella seguente confronta le FIFO simili e le FIFO disuguali:
| Come FIFO | A differenza del FIFOS |
|---|---|
| Segue il metodo FIFO. | Utilizza un metodo per intercettare specifici messaggi urgenti prima che raggiungano la parte frontale. |
| Il metodo FIFO esiste indipendentemente sia dal processo di invio che da quello di ricezione. | Sempre pronto, quindi non c'è bisogno di aprirlo o chiuderlo. |
| Consente il trasferimento di dati tra processi non correlati. | Non presenta alcun problema di sincronizzazione tra apertura e chiusura. |


