Creeaza.com - informatii profesionale despre


Simplitatea lucrurilor complicate - Referate profesionale unice
Acasa » referate » informatica
Comunicare prin pipe

Comunicare prin pipe


Comunicare prin pipe

Cea mai simpla comunicare intre procese se realizeaza prin fisiere de tip pipe. Un fisier pipe permite schimbul de date intre procese, putand fi accesat printr-un descriptor de fisier, ca orice fisier obisnuit. Comunicatia prin fisiere de tip pipe este unidirectionala (half-duplex). De aceea, un proces scrie date in pipe, in timp ce alt proces citeste date din acel pipe. Dimensiunea unui pipe reprezinta o caracteristica de sistem. Citirea dintr-un pipe vid sau scrierea intr-un pipe plin determina blocarea procesului pana la modificarea starii pipe-ului respectiv.

Fisierele de tip pipe sunt fisiere obisnuite la care insa operatiile de citire/scriere se realizeaza intr-o ordine prestabilita FIFO. Aceste fisiere sunt tranzitorii, datele citite intr-o maniera stricta a ordinii in care au fost scrise respectand regula de sincronizare producator/consumator : o data citita dintr-un fisier pipe nu mai poate fi reluata, iar memorarea se face ca la orice fisier utilizand numai blocuri adresate direct.

Fisierele de tip pipe se pot crea prin apelul sistem :

int pipe(int fd[2]);

care returneaza doi descriptori de fisier : fd[0] se foloseste pentru citire, iar fd[1] pentru scriere.

De obicei, fiecare proces inchide unul din capete, lucrand numai in citire sau numai in scriere.



Acest tip de comunicare se poate realiza numai intre un proces si fiii sai, deoarece fisierul pipe nu se identifica decat prin descriptorii sai si intrarile in tabela cu fisiere deschise din zona utilizatorului de proces, aceasta fiind mostenita de catre fiii sai.

Scenariul tipic pentru comunicarea prin pipe intre doua procese este :

Procesul parinte creeaza pipe-ului prin apelul sistem pipe(fd[2]) ;

Procesul parinte creeaza procesului fiu prin apelul sistem fork() ;

In functie de sensul comunicarii, fiecare proces inchide unul din descriptori prin apelul sistem close(fd[i]);

Tot in functie de sensul comunicarii, unul din procese executa operatia de scriere (write(fd[i],)), iar celalalt operatia de citire(read(fd[i],)).





Politica de confidentialitate


creeaza logo.com Copyright © 2024 - Toate drepturile rezervate.
Toate documentele au caracter informativ cu scop educational.