Ein Heap für den Kernel

Low-Level-Programmierung und Experimenteller Kernel; Ansprechpartner: Dirty Oerti
Antworten
Benutzeravatar
Dirty Oerti
Beiträge: 2229
Registriert: Di Jul 08, 2008 5:05 pm
Wohnort: Thurndorf / Würzburg

Ein Heap für den Kernel

Beitrag von Dirty Oerti » Do Okt 09, 2008 8:55 pm

Tag! :)

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
Bei Fragen einfach an daniel[ät]proggen[Punkt]org
Ich helfe gerne! :)
----------
Wenn du ein Licht am Ende des Tunnels siehst, freu dich nicht zu früh! Es könnte ein Zug sein, der auf dich zukommt!
----
It said: "Install Win95 or better ..." So I installed Linux.

Benutzeravatar
Dirty Oerti
Beiträge: 2229
Registriert: Di Jul 08, 2008 5:05 pm
Wohnort: Thurndorf / Würzburg

Re: Ein Heap für den Kernel

Beitrag von Dirty Oerti » Sa Okt 11, 2008 2:12 pm

Hmm... :D

Ich raff's nicht. Ein erster Test und KEIN Fehler..
Das ist mir ja noch nie untergekommen.

Der Heap funktioniert jetzt also.

Wie das Verhalten im Grenzfall ist konnte ich noch nicht testen.
Es ist aber auch nicht sonderlich gut eingebaut (der Heap ist statisch und verändert seine Größe nicht).
Heißt wenn der Heap voll ist, dann gibt's eine Fehlermeldung.
Ansonsten..gibt's nur einen Punkt, an dem ein Fehler auftauchen könnte.
Ich hoffe aber, dass der Punkt nicht erreicht wird. Sowie ich das sehe, kann dieser Punkt auch nicht erreicht werden.

Naja, ich lad's mal hoch ins SVN :)
*edit* Hochgeladen
Revision 36
*/edit*

MfG
Daniel
Bei Fragen einfach an daniel[ät]proggen[Punkt]org
Ich helfe gerne! :)
----------
Wenn du ein Licht am Ende des Tunnels siehst, freu dich nicht zu früh! Es könnte ein Zug sein, der auf dich zukommt!
----
It said: "Install Win95 or better ..." So I installed Linux.

Benutzeravatar
Dirty Oerti
Beiträge: 2229
Registriert: Di Jul 08, 2008 5:05 pm
Wohnort: Thurndorf / Würzburg

Re: Ein Heap für den Kernel

Beitrag von Dirty Oerti » Do Okt 16, 2008 5:51 pm

Haha :)
*strike!*

Als der Heap geladen wurde hat es in bochs immer etwas gedauert, bis der Code danach ausgeführt wurde.
Ich dachte erst es liegt am PageFault Handler (wird da sehr oft aufgerufen).
Jetzt weiß ich's besser:

Der komplette Speicher des Heaps wird auf 0 gesetzt (zur Sicherheit).
Doof nur, dass ich das (aus Versehen) in Byteschritten gemacht habe.
Jetzt habe ich die entsprechende Funktion vereinfacht und es werden nun 4 Byte auf einmal auf 0 gesetzt.

:)

(ist in der nächsten Revision mit drinnen)
Bei Fragen einfach an daniel[ät]proggen[Punkt]org
Ich helfe gerne! :)
----------
Wenn du ein Licht am Ende des Tunnels siehst, freu dich nicht zu früh! Es könnte ein Zug sein, der auf dich zukommt!
----
It said: "Install Win95 or better ..." So I installed Linux.

nufan
Wiki-Moderator
Beiträge: 2557
Registriert: Sa Jul 05, 2008 3:21 pm

Re: Ein Heap für den Kernel

Beitrag von nufan » Do Okt 16, 2008 6:41 pm

DirtyOerti hat geschrieben:(ist in der nächsten Revision mit drinnen)
Wie wär's mit einem eigenem Thread quasi als Changelog?

Benutzeravatar
Dirty Oerti
Beiträge: 2229
Registriert: Di Jul 08, 2008 5:05 pm
Wohnort: Thurndorf / Würzburg

Re: Ein Heap für den Kernel

Beitrag von Dirty Oerti » Do Okt 16, 2008 7:00 pm

dani93 hat geschrieben:
DirtyOerti hat geschrieben:(ist in der nächsten Revision mit drinnen)
Wie wär's mit einem eigenem Thread quasi als Changelog?
Wäre ne Idee, denke ich^^
Bei Fragen einfach an daniel[ät]proggen[Punkt]org
Ich helfe gerne! :)
----------
Wenn du ein Licht am Ende des Tunnels siehst, freu dich nicht zu früh! Es könnte ein Zug sein, der auf dich zukommt!
----
It said: "Install Win95 or better ..." So I installed Linux.

nufan
Wiki-Moderator
Beiträge: 2557
Registriert: Sa Jul 05, 2008 3:21 pm

Re: Ein Heap für den Kernel

Beitrag von nufan » Do Okt 16, 2008 7:36 pm

Dirty Oerti hat geschrieben:
dani93 hat geschrieben:
DirtyOerti hat geschrieben:(ist in der nächsten Revision mit drinnen)
Wie wär's mit einem eigenem Thread quasi als Changelog?
Wäre ne Idee, denke ich^^
War nur ein Vorschlag, aber so steht überall verteilt was es neues gibt. Wenn das alles in einem Thema wäre, wäre es praktischer. ;)

Benutzeravatar
Dirty Oerti
Beiträge: 2229
Registriert: Di Jul 08, 2008 5:05 pm
Wohnort: Thurndorf / Würzburg

Re: Ein Heap für den Kernel

Beitrag von Dirty Oerti » Do Okt 16, 2008 8:17 pm

Ja, du hast Recht.
Ich werde demnächst so ein Thema hier einrichten.
Wenn das nächste größere Update ansteht :)
Bei Fragen einfach an daniel[ät]proggen[Punkt]org
Ich helfe gerne! :)
----------
Wenn du ein Licht am Ende des Tunnels siehst, freu dich nicht zu früh! Es könnte ein Zug sein, der auf dich zukommt!
----
It said: "Install Win95 or better ..." So I installed Linux.

nufan
Wiki-Moderator
Beiträge: 2557
Registriert: Sa Jul 05, 2008 3:21 pm

Re: Ein Heap für den Kernel

Beitrag von nufan » Do Okt 16, 2008 8:32 pm

DirtyOerti hat geschrieben:Wenn das nächste größere Update ansteht :)
*gespannt guck* :D

Benutzeravatar
Dirty Oerti
Beiträge: 2229
Registriert: Di Jul 08, 2008 5:05 pm
Wohnort: Thurndorf / Würzburg

Re: Ein Heap für den Kernel

Beitrag von Dirty Oerti » Do Okt 16, 2008 8:34 pm

dani93 hat geschrieben:
DirtyOerti hat geschrieben:Wenn das nächste größere Update ansteht :)
*gespannt guck* :D
Das nächste ist entweder Multitasking (einfaches) oder verbessertes Paging...
Bei Fragen einfach an daniel[ät]proggen[Punkt]org
Ich helfe gerne! :)
----------
Wenn du ein Licht am Ende des Tunnels siehst, freu dich nicht zu früh! Es könnte ein Zug sein, der auf dich zukommt!
----
It said: "Install Win95 or better ..." So I installed Linux.

Antworten