SHPORA.net :: PDA | |
Main FAQ гуманитарные науки естественные науки математические науки технические науки 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. |