SHPORA.net :: PDA | |
Main FAQ гуманитарные науки естественные науки математические науки технические науки a.Alg ialloc alg ialloc /* asignează un inod */
intrare: sistemul de fişiere ieşire: inod blocat { while (operaţia nu s-a încheiat) { if (superblocul este blocat) { sleep (până superblocul devine liber); continue; /* salt la while */ } if (lista de inoduri din superbloc este goală) { blochează superblocul; determină inodul memorat folosit în căutarea inodurilor libere; caută pe disc inoduri libere până se umple lista din superbloc sau nu mai sunt inoduri libere (algoritmi bread şi brelse ); deblochează superblocul; trezeşte procesele ce aşteptau ca superblocul să devină liber; if (nu s-au găsit inoduri libere pe disc) return (nu există inod); stabileşte valoarea inodului memorat pentru următoarea căutare de inoduri libere; } /* lista inodurilor din superbloc nu e goală */ obţine un număr de inod din lista de inoduri din superbloc; obţine inod (algoritm iget); if (inodul nu e liber nici acum /* a fost alocat altui fişier !!! */ { scrie inodul pe disc; eliberează inodul (algoritmul iput); continue; /* salt la while */ } /* inodul este liber */ iniþializează inod; scrie inodul pe disc; decrementează contorul inodurilor libere din sistemul de fişiere; |