a.Apel:sist,read

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


Sintaxa apelului sistem read este:
numгr = read(fd, buffer, contor);
unde fd este descriptorul de fi?ier returnat de cгtre open, buffer este adresa de memorie din spaЮiul procesului utilizator care va conЮine datele оn caz de reu?itг a apelului, contor este numгrul de octeЮi pe care utilizatorul dore?te sг-i citeascг, iar numгr este numгrul de octeЮi citiЮi оn urma apelului.
^mode-indicг tipul operaЮiei (citire sau scriere)
^count-numгrul de octeЮi ce urmeazг a fi citiЮi sau scri?i.
^offset-offsetul din fi?ier.
^address-adresa din spaЮiul nucleu sau utilizator оn care se vor copia datele.
^flag-indicг tipul adresei (utilizator sau nucleu).
Astfel, este setat modul de I/O pentru a indica cг se executг o citire, un flag care indicг faptul cг datele vor fi transferate оn spaЮiul de adrese utilizator, un contor cu numгrul de octeЮi ce vor fi citiЮi, adresa bufferului din spaЮiul utilizator, ?i un cвmp de offset (copiat din GFT) care precizeazг de unde va оncepe citirea datelor. Dupг stabilirea parametrilor de I/O оn u area, folosind pointerul din GFT cгtre intrarea din IT, nucleul blocheazг inodul оnaintea de a оncepe citirea fi?ierului. Algoritmul intrг apoi оntr-un ciclu pвnг la citirea numгrului dorit de octeЮi. Nucleul determinг pe baza offsetului numгrul blocului din cadrul fi?ierului care va fi citit, memoreazг offsetul din cadrul blocului ?i numгrul de octeЮi din bloc ce vor fi copiaЮi оn spaЮiul utilizator. Dupг citirea unui bloc оn memorie, folosind algoritmul bread sau breada, nucleul copiazг datele din bloc оn spaЮiul de adrese al procesului utilizator. Sunt modificaЮi parametrii din u area corespunzгtor numгrului de octeЮi citiЮi incrementвnd offsetul fi?ierului ?i adresa din spaЮiul utilizator la care va avea loc urmгtorul transfer, ?i decrementвnd contorul cu numгrul de octeЮi ce mai trebuie citiЮi.