a.Apel:sist,read

[ ]
Sintaxa apelului sistem read este:
numr = read(fd, buffer, contor);
unde fd este descriptorul de fi?ier returnat de ctre open, buffer este adresa de memorie din spaiul procesului utilizator care va conine datele n caz de reu?it a apelului, contor este numrul de octei pe care utilizatorul dore?te s-i citeasc, iar numr este numrul de octei citii n urma apelului.
^mode-indic tipul operaiei (citire sau scriere)
^count-numrul de octei ce urmeaz a fi citii sau scri?i.
^offset-offsetul din fi?ier.
^address-adresa din spaiul 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 spaiul de adrese utilizator, un contor cu numrul de octei ce vor fi citii, adresa bufferului din spaiul utilizator, ?i un cmp 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 ctre intrarea din IT, nucleul blocheaz inodul naintea de a ncepe citirea fi?ierului. Algoritmul intr apoi ntr-un ciclu pn la citirea numrului dorit de octei. Nucleul determin pe baza offsetului numrul blocului din cadrul fi?ierului care va fi citit, memoreaz offsetul din cadrul blocului ?i numrul de octei din bloc ce vor fi copiai n spaiul utilizator. Dup citirea unui bloc n memorie, folosind algoritmul bread sau breada, nucleul copiaz datele din bloc n spaiul de adrese al procesului utilizator. Sunt modificai parametrii din u area corespunztor numrului de octei citii incrementnd offsetul fi?ierului ?i adresa din spaiul utilizator la care va avea loc urmtorul transfer, ?i decrementnd contorul cu numrul de octei ce mai trebuie citii.

:

Network | | | | | | | | | | | | | | | - | | | | | | | | | | | | | | | | | | | | | () | | | | | | | | | | | | | | | | () | Assembler | Basic, VB | Pascal | , ++ |