Kernelprogrammierung - Suche: Ansätze für Speicherverwaltung

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

Re: Kernelprogrammierung - Suche: Ansätze für Speicherverwaltung

Beitrag von Dirty Oerti » Mo Aug 18, 2008 4:22 pm

Tag an alle! :)

Ich muss leider mitteilen, dass ich bis jetzt eigentlich nichts programmiert habe.
Liegt einfach daran, dass ich durch meinen Ferienjob jetzt keine Zeit mehr habe.

Macht nichts, während ich jobe kann ich immer gut überlegen, wie ich mein Speicherverwaltungskonzept verbesser ;) (meine Arbeit ist nicht sonderlich geistig anstrengend...^^)
Denn so wirklich zufrieden bin ich damit nicht...

Was ich auf jedenfall ändern werde ist, dass die Speichergröße besser erkannt werden soll.
Außerdem werde ich die Größe der einzelnen Bitmaps ändern (auch wenn ich dann schlechter testen kann, habe halt leider keinen Rechner mit viel Speicher..). Ich dachte da so an 32,64 oder 128 MB große Bitmaps.
Wobei ich eher zu 32 MB tendiere, da ich sonst Probleme hab bei Bitmaps mit 128 MB Größe und nur einem Speicher von 64 MB (als Beispiel).

Wie immer meine Bitte:
Falls jemanden von euch eine Verbesserung meines Konzepts oder gar ein anderes Konzept einfällt: Lasst es mich wissen! :)

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
Xin
nur zu Besuch hier
Beiträge: 8858
Registriert: Fr Jul 04, 2008 11:10 pm
Wohnort: /home/xin
Kontaktdaten:

Re: Kernelprogrammierung - Suche: Ansätze für Speicherverwaltung

Beitrag von Xin » Di Aug 19, 2008 2:00 pm

Dirty Oerti hat geschrieben:Ich muss leider mitteilen, dass ich bis jetzt eigentlich nichts programmiert habe.
Liegt einfach daran, dass ich durch meinen Ferienjob jetzt keine Zeit mehr habe.
Mich wundert mehr, dass Du Ferien hast, als dass ein Ferienjob Dich beansprucht ;-)
Dirty Oerti hat geschrieben:Macht nichts, während ich jobe kann ich immer gut überlegen, wie ich mein Speicherverwaltungskonzept verbesser ;) (meine Arbeit ist nicht sonderlich geistig anstrengend...^^)
Auch das wundert mich bei einem Ferienjob nicht sonderlich ;-)
Dirty Oerti hat geschrieben:Außerdem werde ich die Größe der einzelnen Bitmaps ändern (auch wenn ich dann schlechter testen kann, habe halt leider keinen Rechner mit viel Speicher..). Ich dachte da so an 32,64 oder 128 MB große Bitmaps.
Wobei ich eher zu 32 MB tendiere, da ich sonst Probleme hab bei Bitmaps mit 128 MB Größe und nur einem Speicher von 64 MB (als Beispiel).
Vielleicht sollten die Bitmapgröße konfigurierbar sein, ich habe mir sagen lassen, dass es auch Computer gab, die weniger als 64MB Speicher hatten. ;-)
Dirty Oerti hat geschrieben:Wie immer meine Bitte:
Falls jemanden von euch eine Verbesserung meines Konzepts oder gar ein anderes Konzept einfällt: Lasst es mich wissen! :)
Wie sieht es denn mit sortieren Listen aus? Was ist daran so schlimm?
Merke: Wer Ordnung hellt ist nicht zwangsläufig eine Leuchte.

Ich beantworte keine generellen Programmierfragen per PN oder Mail. Dafür ist das Forum da.

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

Re: Kernelprogrammierung - Suche: Ansätze für Speicherverwaltung

Beitrag von nufan » Di Aug 19, 2008 3:05 pm

Wegen der Speichergröße:

Ich lasse die Speichergröße jetzt auf 2 hoch N aufrunden. Einfach aus dem Grund, weil ich noch keinen computer gesehen habe, der 123 MB Speicher hat.
Typsiche Werte für die Speichergröße sind ja: 16, 32, 64, 128, 256, 512, 1024, 2048, 4096 MB
Worüber sprichst du hier? RAM?
Ehrlich gesagt, hab ich noch nie einen PC mit _genau_ 2^N MB RAM gesehen. Mein alter Desktop hat 63 statt 64, mein neuer 1021 statt 1024 und mein Notebook nur 3066 statt 3072 MB.

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

Re: Kernelprogrammierung - Suche: Ansätze für Speicherverwaltung

Beitrag von Dirty Oerti » Di Aug 19, 2008 4:23 pm

dani93 hat geschrieben:
Wegen der Speichergröße:

Ich lasse die Speichergröße jetzt auf 2 hoch N aufrunden. Einfach aus dem Grund, weil ich noch keinen computer gesehen habe, der 123 MB Speicher hat.
Typsiche Werte für die Speichergröße sind ja: 16, 32, 64, 128, 256, 512, 1024, 2048, 4096 MB
Worüber sprichst du hier? RAM?
Ehrlich gesagt, hab ich noch nie einen PC mit _genau_ 2^N MB RAM gesehen. Mein alter Desktop hat 63 statt 64, mein neuer 1021 statt 1024 und mein Notebook nur 3066 statt 3072 MB.
Ja, es geht um den Arbeitsspeicher.

Das die Angaben natürlich immer nur die Maximalwerte sind ist mir schon klar.
Was ich eigentlich sagen will:

Die Speichergröße ist immer laut Nennwert ein Vielfaches von 2, oft sogar 2 hoch N.
Das in Wirklichkeit nicht so viel Speicher adressierbar ist, ist klar.
Aber dabei hält es sich ja in Grenzen, es sind keine 10-20 MB, die zuviel angegeben werden.

Xin hat geschrieben:Mich wundert mehr, dass Du Ferien hast, als dass ein Ferienjob Dich beansprucht ;-)
Bayern + Schüler => Ferien ;)
Xin hat geschrieben:Auch das wundert mich bei einem Ferienjob nicht sonderlich ;-)
Ja..wobei es wohl doch anspruchsvollere Aufgaben als meine gibt.
Ich sitze tagtäglich mit einem Hammer da, kontrolliere Pumpenteile und klopf Kontrollnummern, Kürzel und TÜVzeichen in die Teile. Aber nur noch die Woche und die nächste. Dann geht's ab in den Urlaub :)
Xin hat geschrieben:Vielleicht sollten die Bitmapgröße konfigurierbar sein, ich habe mir sagen lassen, dass es auch Computer gab, die weniger als 64MB Speicher hatten. ;-)
Ja, das ist so ne Sache.
Konfigurierbar heißt so viel wie "es muss automatisch konfiguriert werden".
Und das bedeutet sehr viel Arbeit und auch mehr Verwaltung während der Laufzeit, was als Folge langsamere Allokation und Deallokation mit sich bringt.
Das es Computer mit weniger als 64 MB gibt ist mir bekannt^^
Ich hatte sogar mal einen...
Xin hat geschrieben:Wie sieht es denn mit sortieren Listen aus? Was ist daran so schlimm?
Gar nichts.
Bis jetzt ist mir nur noch nicht so 100% klar gewesen, wie ich das implementieren soll.
Bin aber gestern auf Auszüge aus "Modern Operating Systems, 2nd Edition" gestoßen.
Dort gab es einige Probekapitel zum Runterladen, unteranderem auch Grafiken.
Und da war dann eine dabei...
die das mit den Listen erklärt :)
*Bingo*
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: Kernelprogrammierung - Suche: Ansätze für Speicherverwaltung

Beitrag von Dirty Oerti » Mi Aug 20, 2008 5:39 pm

Xin hat geschrieben:Wie sieht es denn mit sortieren Listen aus?
Hm, wie genau meinst du das?
Mir fallen da mehrere Möglichkeiten ein, Listen zu benutzen.
Jede hat ihre Vorteile, aber jede auch ihre Nachteile...
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
Xin
nur zu Besuch hier
Beiträge: 8858
Registriert: Fr Jul 04, 2008 11:10 pm
Wohnort: /home/xin
Kontaktdaten:

Re: Kernelprogrammierung - Suche: Ansätze für Speicherverwaltung

Beitrag von Xin » Mi Aug 20, 2008 5:55 pm

Dirty Oerti hat geschrieben:
Xin hat geschrieben:Wie sieht es denn mit sortieren Listen aus?
Hm, wie genau meinst du das?
Mir fallen da mehrere Möglichkeiten ein, Listen zu benutzen.
Jede hat ihre Vorteile, aber jede auch ihre Nachteile...
Ich habe noch keine grundlegende Speicherverwaltung geschrieben, insbesondere nicht für ein OS - von daher... kA.

Allerdings könnte ich mir vorstellen, zusammenhängende Blöcke in in Listen zu verwalten. Die Blockgröße wird logarithmisch sortiert entsprechenden Listen zugewiesen.
Hier wäre eine Hash-Funktion gefragt, die Bereichsweise die passende Liste identifiziert.
Für kleinere Anfragen würde ich Blöcke definierter Länge übertragen, so dass z.B. eine Anfrage über 10 Byte Speicher 128 Byte zurückliefert, 200 Byte gibt 256, 1000B gibt 1024Byte.
So bekomme ich im kleineren Bereich Normgrößen, im größeren Bereich, z.B. 70kB, hangle ich mich durch eine Liste, die z.B. alles zw. 4kB und 1MB sortiert verwaltet. Größere Blöcke in einer Liste von 1MB bis 4G.
Über Arrays mit gelisteten Arrays sollte sich eine schnelle binäre Suche führen lassen. Die meisten Speicherrückgaben werden als Standard-Block behandelt, können also einfach wieder in die passende Liste geworfen werden.

Nicht trivial, aber dürfte schnell sein.
Merke: Wer Ordnung hellt ist nicht zwangsläufig eine Leuchte.

Ich beantworte keine generellen Programmierfragen per PN oder Mail. Dafür ist das Forum da.

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

Re: Kernelprogrammierung - Suche: Ansätze für Speicherverwaltung

Beitrag von Dirty Oerti » Mi Aug 20, 2008 7:41 pm

Hm...

so ganz 100% versteh ich dich nicht.
Aber ich habe eine wichtige Anmerkung:

Die Blockgröße ist nicht verschieden, sie beträgt immer 4KB.

Die Speicherverwaltung, um die es mir geht, soll den Speicher nur grob verwalten.

4KB große Frames werden nunmal in die Page Tables geschrieben und können daher einzeln abgeschirmt werden.
Um Allokation und Deallokation in Form von Malloc zu erhalten, werde ich eine Art zusätzliches Programm für jedes Programm starten lassen (oder eines global), welches dann in einem eigenen Frame (=4KB) läuft und diesen benutzen kann.
Bei Bedarf kann es sich natürlich auch mehr Frames a 4KB zuteilen lassen.

Heißt im Endeffekt:

Ich habe eine gewisse Speichergröße.
Der gesamte Speicher wird in 4KB große Stücke geteilt.
Die müssen nun verwalten werden.
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
Xin
nur zu Besuch hier
Beiträge: 8858
Registriert: Fr Jul 04, 2008 11:10 pm
Wohnort: /home/xin
Kontaktdaten:

Re: Kernelprogrammierung - Suche: Ansätze für Speicherverwaltung

Beitrag von Xin » Mi Aug 20, 2008 8:28 pm

Dirty Oerti hat geschrieben:Ich habe eine gewisse Speichergröße.
Der gesamte Speicher wird in 4KB große Stücke geteilt.
Die müssen nun verwalten werden.
Ich weiß nicht, wie weit Du da im ersten Schritt schon gehen willst.

Ansonsten kann ich Dich auch nur auf Silberschatz und Tanenbaum verweisen.
Merke: Wer Ordnung hellt ist nicht zwangsläufig eine Leuchte.

Ich beantworte keine generellen Programmierfragen per PN oder Mail. Dafür ist das Forum da.

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

Re: Kernelprogrammierung - Suche: Ansätze für Speicherverwaltung

Beitrag von Dirty Oerti » Mi Aug 20, 2008 8:39 pm

Xin hat geschrieben:
Dirty Oerti hat geschrieben:Ich habe eine gewisse Speichergröße.
Der gesamte Speicher wird in 4KB große Stücke geteilt.
Die müssen nun verwalten werden.
Ich weiß nicht, wie weit Du da im ersten Schritt schon gehen willst.

Ansonsten kann ich Dich auch nur auf Silberschatz und Tanenbaum verweisen.
Im ersten Schritt soll eigentlich nur ein Frame als benutzt oder unbenutzt gekennzeichnet sein.
Mehr noch nicht. :)
Das kommt alles später.
Und die 4KB sollten nicht "angetastet" werden. Heißt Header scheiden aus.

Einfach aus dem Grund weil ich ein kompletten Frame in ein Page Table eintragen können möchte.
Und der hat nunmal eine Größe von 4KB und ist Page aligned.
Damit werden Header unmöglich.

Ja...Silberschatz und Tannenbaum..
Leider sind die nicht gerade billig...

Mal schauen, vllcht findet sich was in ebay...
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: Kernelprogrammierung - Suche: Ansätze für Speicherverwaltung

Beitrag von Dirty Oerti » Mo Sep 15, 2008 1:57 pm

So, ich bin zurück aus dem Urlaub und hab mich auch gleich mal wieder an die Arbeit gemacht.

Meine Experimente mit der Speicherverwaltung finde ich jetzt im Nachhinein zu unübersichtlich.
Ich weiß jetzt was nicht so gut ist und kann von vorne, diesmal aber mit mehr Wissen anfangen.

Heißt im Klartext:

Ich hab mir die im Repo sitzende, lauffähige Version geladen und programmiere von dieser aus weiter.
Damit lasse ich die ganzen Änderungen, die ich (zum Glück) nur hier lokal auf meinem Rechner vorgenommen hab zurück.

Bevor ich jetzt drauf los programmiere, muss aber erstmal das Konzept stehen.

Anstatt einer Bitmap habe ich vor, es diesesmal über Listen zu versuchen.

Wenn jemand Ideen hat, ist er/sie wieder herzlichst dazu eingeladen, sie hier zu posten :)

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.

Antworten