Lowlevel
Lowlevel => Lowlevel-Coding => Thema gestartet von: T0ast3r am 30. December 2005, 20:20
-
Hallo allerseits!
Ich hab eine Frage zum Thema Heap.
Wie ist der aufgebaut, undwie realisiere ich einen?
Schreibt bitte alles was ihr über den Freispeicher wisst!
Vielen dank schon im voraus,
Toaster
-
Na ja, verkettete Listen, Tabellen usw. alles Möglichkeiten ...
-
Zuerst musst du logischerweise die Größe des Speichers ermitteln. (z.B. GRUB benutzen^^, oder BIOS Interrupts)
Dann merkst du dir irgentwie (Listen, Tabellen, Bitfelder, Stacks usw.) welche Pages belegt sind, und welche frei sind. Wie die Userlevel Programme den Heap verwalten kann dem Kernel ja egal sein. Es reicht ja, wenn man Systemcalls für "Pages allokieren" und "Page freigeben" hat.
Die Userlevelprogramme sowie der Kernel intern können dann Pages allokieren, und dann durch irgentwelche Strukturen speichern, welche Bereiche eine Page benutzt sind usw. Beispielsweise könnte man das durch doppelt verkettete Listen machen indem man diese Struktur vor jeden Speicherbereich stellt:
[code]typedef struct memory {
size_t size;
struct memory *prev;
struct memory *next;
} memory_t;
-
Ãhm, mit welchen Bios-Interrupts und wie kann man die Grösse des Speichers feststellen ??
-
Ãhm, mit welchen Bios-Interrupts und wie kann man die Grösse des Speichers feststellen ??
mega-tokyo FAQ (http://www.mega-tokyo.com/osfaq2/index.php/How%20do%20I%20determine%20the%20amount%20of%20RAM%3F)