SHPORA.net :: PDA

Login:
đćăèńòđàöèÿ

Main
FAQ

ăóìàíèòàđíûć íàóêè
ćńòćńòâćííûć íàóêè
ìàòćìàòèśćńêèć íàóêè
òćőíèśćńêèć íàóêè
Search:
Title: | Body:

b.Alocarea spaю.de.swap

--algoritm malloc / * algoritm pentru alocarea spațiului din tabela map * /
^intrări :^ ( 1 ) adresa map / * indică ce tabelă map se folose?te * /
^ ( 2 ) numărul necesitat de unități
^ie?iri : adresa ,în caz de succes
0 ,altfel
^for ( fiecare intrare a map )
^if ( intrarea curentă din map se potrive?te cu numărul necesitat de unități )
^if ( numărul necesitat de unități = = numărul de unități al intrării )
?terge intrarea din map ;
^else
^ ajustează adresa de început a intrării ;
^ return ( 0 ) ;
--Nucleul caută în tabela map prima intrare care conține spațiu suficient pentru cererea făcută. Dacă cererea consumă toate resursele intrării din map, nucleul ?terge intrarea din tabelă ?i comprimă tabela în mod corespunzător. Dacă cererea este mai mică decât numărul de unități al intrării din tabelă, nucleul ajustează câmpurile de adresă ?i număr de unități ale intrării în concordanță cu cantitatea de resurse alocate. Când eliberează resursele, nucleul găse?te poziția corectă in tabelă prin intermediul adresei. Există trei cazuri posibile : 1.Resursele eliberate acoperă complet un gol în tabelă: ele sunt contigue cu intrările ale căror adrese le-ar precede ?i le-ar urma imediat în tabelă. În acest caz nucleul combină noile resurse eliberate ?i intrările existente ( două ) într-o singură intrare în tabelă. 2.Resursele eliberate acoperă parțial un gol în tabela map. Dacă adresele resurselor eliberate sunt contigue cu intrarea care le-ar precede sau cu intrarea care le-ar urma imediat în tabelă (dar nu cu amândouă) , atunci nucleul ajustează câmpurile de adresă ?i număr de unități pentru intrarea respectivă , ținând cont de cantitatea de resurse eliberată. Numărul intrărilor din tabela map rămâne acela?i. 3.Resursele eliberate acoperă parțial un gol din map dar nu sunt contigue cu nici o resursă din map. Nucleul crează o nouă intrare în map ?i o inserează în poziția corespunzătoare.