SHPORA.net :: PDA

Login:
регистрация

Main
FAQ

гуманитарные науки
естественные науки
математические науки
технические науки
Search:
Title: | Body:

a.Alg iget

intrare: număr inod din sistemul de fişiere
ieşire: inod blocat
{
while (execuţia nu s-a încheiat)
{
if (inodul este în cache)
{
if (inodul este blocat)
{
sleep (până la deblocarea inodului);
continue; /* salt la while */
}
/* execuţie specială în cazul în care este punct de montare (Capitolul 5) */ if (inodul este în FLI)
şterge inodul din FLI;
incrementează contorul de referinţă al inodului;
return (inod);
}
/* inodul nu este în cache-ul de inoduri (listele hq) */
if (nu este nici un inod în FLI)
return (eroare);
şterge noul inod din FLI;
resetează numărul inodului şi sistemul de fişiere;
şterge inodul din vechea listă hq, plasează-l în cea nouă;
citeşte inodul de pe disc (algoritm bread);
iniþializează inodul (de exemplu, contorul=1);
return (inod);
}
}
Nucleul identifică un anumit inod după sistemul de fişiere din care face parte şi numãrul inodului. La cererea algoritmilor de nivel mai înalt, algoritmul iget alocă o copie în memoria internă pentru un inod.Nucleul asociază numărului dispozitivului şi numărul inodului o listă hq în care se va face căutarea inodului. Dacă nucleul nu găseşte inodul, el alocă unul din FLI şi-l blochează. Apoi pregăteşte citirea copiei disc în inodul alocat. Pe baza numărului inodului şi a numărului dispozitivului logic (cunoscute), nucleul calculează blocul logic de pe disc care conţine inodul ţinând seamă de numărul de inoduri ce pot încape într-un bloc disc.