SHPORA.net :: PDA

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

Main
FAQ

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

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;