Memória tömítés - stadopedia
A memória fragmentáció problémájának megoldására a rendszerben különböző tömörítési algoritmusok valósíthatók meg. A tömítés lehet részleges vagy teljes. Ha a memória részben lezárva van, az aktív blokkokat nem lehet eltolni, így a tömörítést csak a szomszédos szabad tömbök kombinálásával lehet végrehajtani. A teljes tömörítést úgy hajtják végre, hogy az aktív elemeket eltolják a köztük kialakított "ablakok".
A tömörítési algoritmus időtartamára a számításokat felfüggesztik.
A Compaction_Pointeret jelöli a heap elem tömörítési mutatója, és a méret a heap elem nagysága. Elvégzésére tömörítő algoritmus is igényel két munkanapon mutató: P - a mutatót, hogy mozoghat a halom, Q - tömítő jelenlegi mutató.
tömörítő algoritmus négy szakaszra osztott, amelyek közül az első - lépésben címkézés - végre ugyanolyan módon, mint a szemétgyűjtő (elemek Heap nézett Láncelemek kezdődő külső mutatók), így rendszerek, amelyek lehetővé teszik a megjelenése a szemetet, a szemétgyűjtő eljárást kombináljuk a tömörítési algoritmus végrehajtásával.
Az algoritmus második lépése a tömítési mutatók telepítése. A műveletet úgy végzik el, hogy egymás után átkerülnek az összes tömbelemre, az első mondattól kezdve az alábbi szabályok szerint:
¨ Kezdetben a P és Q mutatók a halom elejére vannak állítva;
Sorozatos átjutás a halom elemei között:>
míg a P nem ment túl a halomon
Kezdje el a pecsét index>
A leírt algoritmus lehetővé teszi a szemétgyűjtést a memória fragmentálása nélkül ugyanazon a területen, ahol az aktív cellák abban a pillanatban helyezkednek el.