Differenza tra comunicazione PIPE e FIFO nei processi informatici
PIPE
In informatica, un pipe è un meccanismo per la comunicazione tra processi; i dati scritti nella pipe da un processo possono essere letti da un altro processo. I dati vengono gestiti in ordine FIFO (first-in, first-out). La pipe non ha nome; è creato per un utilizzo ed entrambe le estremità devono essere ereditate dal singolo processo che ha creato il pipe.
In PIPES quando usiamo fork () crea un processo come un duplicato di main. Ciò significa che quando usiamo fork ci sono due processi che vengono generati, uno è indicato come processo genitore e un altro è indicato come processo figlio. Fork restituisce -1 quando il fork non riesce e quando restituisce 0 significa che il suo processo figlio e quando fork restituisce un valore positivo che significa che è un processo genitore.
Se il processo figlio esce prima del processo genitore, viene indicato come processo Zombie, mentre se il processo padre esce prima del processo figlio, viene indicato come processo orfano. In questo caso il figlio è gestito dal processo Init, la funzione pipe è dichiarata nel file di intestazione #include.
FIFO (first-in, first-out)
Un FIFO è un tipo speciale di file nella memoria locale che consente a due o più processi di comunicare tra loro leggendo o scrivendo nel o dal file. È simile a una pipe, ma invece di essere una connessione temporanea anonima, un FIFO ha un nome o nomi come qualsiasi altro file. I processi aprono il FIFO per nome per poter comunicare attraverso di esso.
Un file speciale FIFO viene inserito nel file system chiamando mkfifo () in C. Una volta creato un file speciale FIFO in questo modo, qualsiasi processo può aprirlo per la lettura o la scrittura, allo stesso modo di un normale file. Tuttavia, deve essere aperto a entrambe le estremità contemporaneamente prima di poter procedere con qualsiasi operazione di input o output su di esso.
Differenza tra comunicazione PIPE e FIFO
BASE DI CONFRONTO | PIPE | FIFO |
Descrizione | Sono oggetti IPC senza nome. | Sono denominati Oggetto IPC. |
Comunicazione | FIFO è in grado di comunicare tra diversi computer e reti. | PIPE è locale per il sistema e non può essere utilizzato per la comunicazione attraverso la rete. |
Esistenza | PIPE non esiste nel file system. | FIFO esiste nel file system. |
Processi | In PIPE, il trasferimento dei dati avviene tra il processo figlio e il processo padre. | FIFO ha più processi che comunicano attraverso di esso, come più applicazioni client-server. |
Creazione | PIPE è creato dalla funzione pipe (). | FIFO è creato dalla funzione mkfifo (). |
Operazione di lettura e scrittura | In PIPE, le operazioni di lettura e scrittura vengono eseguite contemporaneamente. | In FIFO, non richiede che le operazioni di lettura e scrittura avvengano contemporaneamente. |
Esistenza | PIPE scompare non appena viene chiuso o uno dei processi (genitore o figlio) completa l’esecuzione. | FIFO esiste anche quando si chiama l’uscita del processo. Rimangono fino al riavvio del sistema. |
Controllo su proprietà e autorizzazioni | PIPE non ha alcun controllo sulla proprietà e sui permessi. | Dato che FIFO è un file, puoi controllare la proprietà e le autorizzazioni. |
Natura | PIPE è unidirezionale. | FIFO è bidirezionale. Lo stesso FIFO può essere utilizzato per la lettura e la scrittura. |
Modalità di comunicazione | PIPE fornisce un flusso di dati simplex. | FIFO fornisce un flusso di dati half duplex. |
Comunicazione | In PIPE, la comunicazione è tra i processi che hanno un antenato comune (processo correlato). | In FIFO, non è necessario che il processo abbia un antenato comune per la comunicazione (processo non correlato). |