SHPORA.net :: PDA

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

Main
FAQ

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

Alocarea unui inod la fisier

Nucleul utilizează algoritmul iget pentru a aloca un inod în memoria internă pentru un inod disc cunoscut (al cărui sistem de fişiere şi număr de inod a fost determinat anterior). În algoritmul namei, nucleul determină numãrul inodului pentru care are loc potrivirea unei componente din numele căii cu numele unui intrări într-un director. Un alt algoritm, ialloc, asignează (alocă) un inod disc unui fişier nou creat. Aşa cum s-a menţionat în capitolul 2, sistemul de fişiere conţine o listă de inoduri. Un inod este liber dacă câmpul tip are valoarea 0. Când un proces doreşte un nou inod, nucleul ar putea teoretic să caute un inod liber în lista de inoduri. Însă o astfel de căutare este neeconomică, necesitând cel puţin o operaţiune de citire (posibil de pe disc) pentru fiecare inod. Pentru îmbunătăţirea performanţei, superblocul sistemului de fişiere conţine un şir în care păstrează numere de inoduri libere din sistemul de fişiere.Pentru a evita condiţiile de concurenţă, nucleul verifică mai întâi dacă alte procese nu au blocat accesul la lista de inoduri libere din superbloc. Dacă lista cu numere de inoduri din superbloc nu este goală, nucleul asignează următorul număr de inod, alocă un inod liber în memoria internă pentru inodul disc nou asignat folosind algoritmul iget (citind inodul de pe disc dacă e necesar), copiază inodul disc În inodul din memoria internă, iniţializează câmpurile inodului şi returnează inodul blocat. Actualizează inodul disc pentru a arăta că inodul se află în folosire: o valoare diferitã de zero a câmpului din inod ce conţine tipul fişierului indică faptul că inodul disc este asignat.Dacă lista inodurilor libere din superbloc este goală, citeşte bloc cu bloc lista de inoduri de pe disc şi umple lista din superbloc cu numere de inoduri libere, memorând totodată cel mai mare număr de inod determinat. Acesta, numit şi inod memorat, este ultimul salvat în superbloc. Data următoare când nucleul va căuta inoduri libere pe disc, va utiliza ca punct de plecare inodul memorat.