SHPORA.net :: PDA

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

Main
FAQ

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

b.Alg iget

Calculul se face după formula:
număr_bloc = [(număr_inod-1)/număr_inoduri_per_bloc] + blocul_de_start_al_listei_de_inoduri ;
unde operaţia de împărţire returneazã partea întreagă a rezultatului. De exemplu, presupunând cã blocul 2 este blocul de început al listei de inoduri şi că sunt 8 inoduri per bloc, atunci inodul numărul 8 este în blocul disc numărul 2, iar inodul 9 este în blocul disc numărul 3. Când nucleul cunoaşte dispozitivul şi numărul blocului disc, el citeşte blocul utilizând algoritmul bread, şi utilizează următoarea formulă pentru a calcula offsetul inodului din bloc:
offset = [(număr_inod - 1) modulo (număr? _de_ inoduri_ per_ bloc)] * dimensiunea_inodului_disc ;
De exemplu, dacă fiecare inod disc ocupă 64 octeţi şi sunt 8 inoduri per bloc disc, atunci inodul numărul 8 începe de la offsetul 448 din blocul disc. Nucleul şterge inodul din FLI, îl plasează în lista hq corespunzătoare şi setează contorul de referinţă pe 1. Apoi copiază din inodul disc în cel din memorie tipul fişierului, câmpurile de proprietate, permisiunile de acces, numărul de legături, dimensiunea fişierului şi tabela de localizare, şi returnează inodul blocat.
Nucleul manipulează flagul de blocare şi contorul de referinţă din inod în mod independent. Blocarea se realizează în timpul execuţiei unui apel sistem pentru a împiedica accesarea inodului de cãtre alte procese, pe durata cât este utilizat. Nucleul deblochează inodul la încheierea apelurilor sistem, el nefiind niciodată blocat între apelurile sistem. În acest fel se permite proceselor accesul simultan la fişiere. Nucleul incrementează contorul de referinţă pentru fiecare referinţă activă la fişier. El decrementează contorul de referinţă numai dacă referinţa devine inactivă (când un proces închide fiçierul). Contorul de referinţă rămâne setat între apelurile sistem, împiedicând nucleul să realoce un inod activ. Astfel, nucleul poate bloca şi debloca un inod alocat independent de valoarea contorului de referinţă. Astfel, dacă în cazul bufferului cache termenii deblocat şi eliberat aveau aceeaşi semnificaţie, la inoduri ei au semnificaţie aparte. Termenul eliberat (precum şi cel ce desemneazã starea opusă, alocat) este asociat contorului de referinţă, iar deblocat (cât şi blocat) flagului de blocare.