YeXo - een kernel programmeren

24 april 2006

Physical memory manager 2

Na mijn eerdere post over een PMM nu wat aanvullingen en correcties. Een stack is op meerdere manieren te implementeren. De eerste manier (die ik in het eerdere artikel beschreef) is een echte stack: een doorlopend stuk geheugen met achter elkaar de adressen van vrije pages. Een tweede manier kan echter zijn om een pointer bij te houden naar de eerste vrije page. De eerste 4 bytes van die page bestaan dan weer uit een pointer naar de volgende vrije page, enzovoort.

Ook kun je, wat nogal lijkt op de tweede manier van de stack, een linked list gebruiken. Om deze linked list niet al te veel geheugen te laten gebruiken, is het het meest efficient om naast elkaar liggende pages in een element van de list op te slaan. Dit kan bijvoorbeeld door elk element niet alleen een adres, maar ook een grootte te geven. Om twee naburige stukken weer aan elkaar te plakken, is het handig om de elementen gesorteed te bewaren op adres.

Tot slot nog een paar links over dit onderwerp (in het engels):
Archiefpagina van het forum op codecomments.com
De mega-tokyo pagina over memory management