b.Alocarea spaю.de.swap

[ ]
--algoritm malloc / * algoritm pentru alocarea spaiului din tabela map * /
^intrri :^ ( 1 ) adresa map / * indic ce tabel map se folose?te * /
^ ( 2 ) numrul necesitat de uniti
^ie?iri : adresa ,n caz de succes
0 ,altfel
^for ( fiecare intrare a map )
^if ( intrarea curent din map se potrive?te cu numrul necesitat de uniti )
^if ( numrul necesitat de uniti = = numrul de uniti al intrrii )
?terge intrarea din map ;
^else
^ ajusteaz adresa de nceput a intrrii ;
^ return ( 0 ) ;
--Nucleul caut n tabela map prima intrare care conine spaiu suficient pentru cererea fcut. Dac cererea consum toate resursele intrrii din map, nucleul ?terge intrarea din tabel ?i comprim tabela n mod corespunztor. Dac cererea este mai mic dect numrul de uniti al intrrii din tabel, nucleul ajusteaz cmpurile de adres ?i numr de uniti ale intrrii n concordan cu cantitatea de resurse alocate. Cnd elibereaz resursele, nucleul gse?te poziia corect in tabel prin intermediul adresei. Exist trei cazuri posibile : 1.Resursele eliberate acoper complet un gol n tabel: ele sunt contigue cu intrrile ale cror adrese le-ar precede ?i le-ar urma imediat n tabel. n acest caz nucleul combin noile resurse eliberate ?i intrrile existente ( dou ) ntr-o singur intrare n tabel. 2.Resursele eliberate acoper parial 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 amndou) , atunci nucleul ajusteaz cmpurile de adres ?i numr de uniti pentru intrarea respectiv , innd cont de cantitatea de resurse eliberat. Numrul intrrilor din tabela map rmne acela?i. 3.Resursele eliberate acoper parial 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 poziia corespunztoare.

:

Network | | | | | | | | | | | | | | | - | | | | | | | | | | | | | | | | | | | | | () | | | | | | | | | | | | | | | | () | Assembler | Basic, VB | Pascal | , ++ |