Ein Heap für den Kernel
- Dirty Oerti
- Beiträge: 2229
- Registriert: Di Jul 08, 2008 5:05 pm
- Wohnort: Thurndorf / Würzburg
Ein Heap für den Kernel
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
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.
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.
- Dirty Oerti
- Beiträge: 2229
- Registriert: Di Jul 08, 2008 5:05 pm
- Wohnort: Thurndorf / Würzburg
Re: Ein Heap für den Kernel
Hmm...
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
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.
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.
- Dirty Oerti
- Beiträge: 2229
- Registriert: Di Jul 08, 2008 5:05 pm
- Wohnort: Thurndorf / Würzburg
Re: Ein Heap für den Kernel
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)
*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.
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.
Re: Ein Heap für den Kernel
Wie wär's mit einem eigenem Thread quasi als Changelog?DirtyOerti hat geschrieben:(ist in der nächsten Revision mit drinnen)
- Dirty Oerti
- Beiträge: 2229
- Registriert: Di Jul 08, 2008 5:05 pm
- Wohnort: Thurndorf / Würzburg
Re: Ein Heap für den Kernel
Wäre ne Idee, denke ich^^dani93 hat geschrieben:Wie wär's mit einem eigenem Thread quasi als Changelog?DirtyOerti hat geschrieben:(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.
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.
Re: Ein Heap für den Kernel
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.Dirty Oerti hat geschrieben:Wäre ne Idee, denke ich^^dani93 hat geschrieben:Wie wär's mit einem eigenem Thread quasi als Changelog?DirtyOerti hat geschrieben:(ist in der nächsten Revision mit drinnen)
- Dirty Oerti
- Beiträge: 2229
- Registriert: Di Jul 08, 2008 5:05 pm
- Wohnort: Thurndorf / Würzburg
Re: Ein Heap für den Kernel
Ja, du hast Recht.
Ich werde demnächst so ein Thema hier einrichten.
Wenn das nächste größere Update ansteht
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.
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.
Re: Ein Heap für den Kernel
*gespannt guck*DirtyOerti hat geschrieben:Wenn das nächste größere Update ansteht
- Dirty Oerti
- Beiträge: 2229
- Registriert: Di Jul 08, 2008 5:05 pm
- Wohnort: Thurndorf / Würzburg
Re: Ein Heap für den Kernel
Das nächste ist entweder Multitasking (einfaches) oder verbessertes Paging...dani93 hat geschrieben:*gespannt guck*DirtyOerti hat geschrieben: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.
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.