Lowlevel

Lowlevel => OS-Design => Thema gestartet von: rizor am 26. January 2011, 10:07

Titel: Mapping verwalten
Beitrag von: rizor am 26. January 2011, 10:07
Hi zusammen,

wie habt ihr euer Mapping verwaltet?
Damit ist nicht das normale malloc gemeint, sondern wenn ein Prozess bestimmte Speicherbereiche gemappt haben möchte.
Momentan mappt mein Kernel einfach so ohne zu prüfen, aber das ist ja sehr ungünstig.
Habt ihr da recht performante Ideen?

Gruß,
rizor
Titel: Re:Mapping verwalten
Beitrag von: RedEagle am 26. January 2011, 10:40
Ich weiß nicht genau ob es das ist, was du meinst, aber ich gebe den Prozessen die selben Pagetables wie dem Kernel. Natürlich nur im dem Bereich, in dem sich der Kernel ausbreiten darf. Wenn der Kernel dann Speicher anfordert, und die Pages in dessen Pagetables eingetragen werden, erscheinen sie automatisch auch in dem memspace der Prozesse.
Die Pagetables sind natürlich direkt alle reserviert worden und somit von Anfang an bekannt, sodass ich später nur noch die Pages eintragen muss, und nicht noch extra eine Page für die Table.
Titel: Re:Mapping verwalten
Beitrag von: bluecode am 26. January 2011, 11:04
Habt ihr da recht performante Ideen?
Irgendwas aus dem Artikel physische Speicherverwaltung (http://www.lowlevel.eu/wiki/Physische_Speicherverwaltung) mit dem es möglich ist zu überprüfen ob ein Speicherbereich frei ist. Auch würde ich nicht nur den RAM verwalten, sondern den gesamten Speicher, damit Prozesse auch den Speicher von PCI Geräten allozieren können. Das muss aber nicht in der gleichen Datenstruktur geschehen.
Das Mapping an sich würde ich aber einfach von den Pagetables verwalten lassen.
Falls die Frage eine ganz andere ist, dann spezifiziere bitte konkreter was das Problem ist, um welche Speicherbereiche es geht, welche Operationen du gerne unterstützen würdest, etc... Das sollte man immer machen wenn man eine Datenstruktur sucht.