Autor Thema: Heap (Freispeicher)  (Gelesen 3004 mal)

T0ast3r

  • Gast
Gespeichert
« 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

Legend

  • Beiträge: 635
    • Profil anzeigen
    • http://os.joachimnock.de
Gespeichert
« Antwort #1 am: 30. December 2005, 21:57 »
Na ja, verkettete Listen, Tabellen usw. alles Möglichkeiten ...
*post*

SSJ7Gohan

  • Beiträge: 398
    • Profil anzeigen
Gespeichert
« Antwort #2 am: 30. December 2005, 22:13 »
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;

nooooooooos

  • Beiträge: 734
    • Profil anzeigen
Gespeichert
« Antwort #3 am: 31. December 2005, 09:08 »
Ähm, mit welchen Bios-Interrupts und wie kann man die Grösse des Speichers feststellen ??

bluecode

  • Beiträge: 1 391
    • Profil anzeigen
    • lightOS
Gespeichert
« Antwort #4 am: 31. December 2005, 10:53 »
Zitat von: nooooooooos
Ähm, mit welchen Bios-Interrupts und wie kann man die Grösse des Speichers feststellen ??


mega-tokyo FAQ
lightOS
"Überlegen sie mal 'nen Augenblick, dann lösen sich die ganzen Widersprüche auf. Die Wut wird noch größer, aber die intellektuelle Verwirrung lässt nach.", Georg Schramm

 

Einloggen