Differenza tra comunicazione PIPE e FIFO nei processi informatici

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.

Differenza tra comunicazione PIPE e FIFO nei processi informatici

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).  

Pubblicato da Vito Lavecchia

Lavecchia Vito Ingegnere Informatico (Politecnico di Bari) Email: [email protected] Sito Web: https://vitolavecchia.altervista.org

Lascia un commento

Il tuo indirizzo email non sarà pubblicato. I campi obbligatori sono contrassegnati *