SHPORA.net :: PDA

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

Main
FAQ

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

b.Apel.sist,read

^algoritm read
^intrări: descriptorul de fi?ier
adresa bufferului din spaȚiul de memorie al ^procesului utilizator
numărul de octeȚi ce se dore?te a fi citit
^ie?ire: numărul de octeȚi copiaȚi în spaȚiul utilizator
{
^găse?te intrarea din GFT corespunzătoare descriptorului de fi?ier;
^verifică drepturile de acces la fi?ier;
^stabile?te parametrii din u area implicaȚi în operaȚia de I/O; /* adresa din spaȚiul utilizator, contorul cu numărul de octeȚi ce trebuie R/W, modul de I/O */
^găse?te inodul corespunzător din intării din GFT;
^blochează inodul;
^stabile?te offsetul din u area la valoarea existentă în intrarea din GFT
^while (nu s-a ajuns la numărul dorit de octeȚi citiȚi)
{
^converte?te offsetul în fi?ier în număr de bloc disc ( algoritm bmap);
^calculează offsetul în bloc, numărul de octeȚi ce vor fi citiȚi;
^if (numărul de octeȚi ce vor fi citiȚi este 0)
/* încercare de a citi sfâr?itul fi?ierului */
^break; /* se iese din ciclu */
^cite?te blocul;/* algoritmul breada sau bread */
^copiază datele din bufferul sistem la adresa din spaȚiul utilizator;
^reactualizează câmpurile din u area; /* offsetul în fi?ier, contorul, adresa utilizator */
^deblochează bufferul; /* blocat în bread */
}
^deblochează inodul;
^actualizează offsetul din GFT pentru următoarea operaȚie de citire;
^return (numărul total de octeȚi citiȚi);
}