Also folgendes kmalloc ist nur eine zusatz Funktion. in dieser Funktion wird kmalloc_int so aufgerufen:
return(kmalloc_int(size, 0, 0));
Des Weiteren habe ich kmalloc jetzt so umgestellt, dass physikalische Adressen zurückgegeben werden.
unsigned int placement_address = (unsigned int)&end+0x40000000;
initialise_physical_memory_manager(...) wird komplett ausgeführt.
Er endet dann in einer endlos schleife, wenn nach einer freien physischen Page gesucht wird.
Wie zuvor auch schon gesagt, komischer weise ist die bitmap gefüllt mit dem Wert 0xFFFFFFFF anstatt 0.
Ich habe das OS in ein Archiv gelegt und auf meinem Server abgelegt. Wäre schön, wenn du irgendwann die Zeit findest, dir das mal anzuschaun.
http://87.230.87.9/ftp/christian/DeutschOS.tar.gz Gruß Christian
PS: Wenn du dir den Code anschaust, dann kannst du den ganzen inhalt der Datei mm/paging.c ignorieren, bis auf die Funktion initialise_paging(...).
Hier soll eine freie Page gefunden und reserviert werden, mittels physical_alloc_page(), was dann aber in einem Out of Memory endet.
*EDIT*
Die Funktionen sind teilweise angelehnt an die von LOST, allerdings selbstgeschrieben.
Des Weiteren muss ich den Paging kram nochmals überarbeiten, wenn die physikalische Speicherverwaltung funktioniert.