
Im Moment programmiere ich einen Heap für den Kernel. Zuerst einmal Begriffsklärung:
Ein Heap bezeichnet in diesem Fall eine Datenstruktur mit zugehörigen Funktionen, die zur Speicherverwaltung genutzt wird (malloc() und free() ).
Es könnte sein, dass bei einigen der Verdacht aufkommt "Das hatten wir schon". Ist nicht ganz richtig.
Es ging schonmal um Speicherverwaltung.
"Damals" ging es aber um die unterste Ebene der Speicherverwaltung. Man kann nur einzelne 4KB Blöcke als benutzt oder als frei markieren.
Jetzt, da Paging aktiv ist, kann ich den virtuellen Speicher verwalten.
Das mache ich mit dem angesprochenen Heap.
Solche Funktionen (nur viel besser) kennt ihr aus der GNU stdlib. Der dort eingebaute Heap ist von Doug Lea.
Leider fehlt mir bis jetzt eine gute Möglichkeit, unbenutzte Blöcke zu verwalten.
Deswegen überlasse ich das erstmal einem geordneten Array.
MfG
Daniel