b.Citire/scrie.pipe

Сделай свою wap-шпаргалку =) попробуй конструктор сайтов http://www.panweb.com/


ïn primul caz (Np+Nw)  Cp. Nucleul execută algoritmul de scriere pentru un fişier regulat, cu diferenŢa că incrementează automat dimensiunea pipe-ului, deoarece cantitatea de date din pipe se măreşte odată cu fiecare scriere. ïn cazul fişierelor regulate procesele incrementează dimensiunea fişierului numai când se scriu date după sfârşitul fişierului de la acel moment. Dacă următorul offset din pipe iese din zona blocurilor directe, nucleul stabileşte valoarea offsetului de fişier din u area la valoarea 0 (începutul pipe-ului). Când un proces termină de scris date în pipe, actualizează pointerul de scriere din inodul fişierului pipe, astfel încât următorul proces ce va scrie în pipe să o facă de unde a rămas ultimul. Apoi nucleul trezeşte toate procesele care aşteptau să citească date din pipe.
Când un proces citeşte dintr-un pipe, el verifică dacă pipe-ul este sau nu gol. Dacă pipe-ul conŢine date (Nr  Np), nucleul citeşte date din pipe folosind algoritmul read pentru fişiere regulate. După citirea fiecărui bloc, nucleul decrementează dimensiunea pipe-ului conform numărului de octeŢi citiŢi, şi actualizează valoarea offsetului din u area (dacă e necesar să fie readusă la 0). Apoi sunt trezite toate procesele care sunt în aşteptare şi care doresc să srie în pipe şi reactualizează offsetul curent de citire în inod.--Studiind implementarea pipe-urilor reiese că interfaŢa este consecventă celei pentru fişiere regulate, dar implementarea diferă deoarece nucleul păstrează offseturile de citire şi scriere în inod şi nu în GFT. Offseturile trebuie păstrate în inod pentru pipe-urile numite astfel pentru ca procesele să poată folosi în comun valorile lor. Ele nu pot fi păstrate în GFT pentru că la fiecare deschidere se alocă o nouă intrare în tabelă. SoluŢia adoptată nu ar fi neapărat necesară în cazul pipe-urilor obişnuite (procesele utilizează în comun pipe-ul folosind intrări comune în GFT), însă s-a optat pentru ea deoarece codul e mai simplu.