a.Citire/scrie.pipe
Numгrul de procese care scriu оn pipe nu trebuie sг fie egal cu numгrul de procese care citesc din acesta. Dacг numгrul proceselor care scriu sau citesc este mai mare decвt 1, coordonarea utilizгrii pipe-ului va trebui realizatг prin alte mecanisme. Nucleul acceseazг datele unui pipe оn acela?i fel cum acceseazг datele unui fi?ier regulat, cu diferenЮa cг pipe-urile utilizeazг pentru o mai mare eficienЮг doar blocuri directe, de?i aceasta limiteazг cantitatea datelelor ce pot fi stocate la un moment dat оn pipe. Nucleul manipuleazг blocurile directe ale inodului ca o coadг circularг ?i pгstreazг intern pointerii de citire ?i scriere pentru a conserva modul de lucru FIFO (vezi figura 5.17). Nucleul nu scrie niciodatг оn pipe peste date care nu au fost citite.
Din punct de vedere utilizator pipe-ul este vгzut ca o succesiune de octeЮi, ?i nu de blocuri.
Considerгm оn continuare patru situaЮii оn care se poate executa citirea sau scrierea pipe-urilor:
^ scrierea оntr-un pipe оn care este spaЮiu suficient pentru datele ce vor scrise;
^ citirea dintr-un pipe оn care sunt date suficiente;
^ scrierea оntr-un pipe оn care nu este spaЮiu suficient pentru datele ce vor scrise;
^ citirea dintr-un pipe care nu are date suficiente;
Notгm:
^ Np = numгrul de octeЮi ce se aflг deja оn pipe;
^ Nw= numгrul de octeЮi ce vor fi scri?i оn pipe;
^ Nr = numгrul de octeЮi ce vor fi citiЮi din pipe;
^ Cp = capacitatea pipe-ului;