SHPORA.net :: PDA

Login:
đćăèńòđàöèÿ

Main
FAQ

ăóìàíèòàđíûć íàóêè
ćńòćńòâćííûć íàóêè
ìàòćìàòèśćńêèć íàóêè
òćőíèśćńêèć íàóêè
Search:
Title: | Body:

a.Apel:sist,read

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.