SHPORA.net :: PDA | |
Main FAQ ăóìàíèòàđíûć íàóêè ćńòćńòâćííûć íàóêè ìàòćìàòèśćńêèć íàóêè òćőíèśćńêèć íàóêè a.Citire/scrie.pipe Scrierea într-un pipe se face într-unul din capete, iar citirea în celălalt capăt. După cum s-a menȚionat anterior, procesele accesează datele din pipe în maniera FIFO, ceea ce însemnă că ordinea în care datele sunt scrise într-un pipe este ?i ordinea în care vor fi citite din 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; |