Seite 2 von 2

Re: Paging - Realisierung

Verfasst: Mi Okt 15, 2008 6:53 pm
von nufan
DirtyOerti hat geschrieben:(Revision 49)
Wow, ging ja schnell. Muss mal wieder updaten :)

Re: Paging - Realisierung

Verfasst: Mi Okt 15, 2008 7:08 pm
von Dirty Oerti
dani93 hat geschrieben:
DirtyOerti hat geschrieben:(Revision 49)
Wow, ging ja schnell. Muss mal wieder updaten :)
Gab in letzter Zeit einige kleinere Änderungen ;)

Re: Paging - Realisierung

Verfasst: Mi Okt 15, 2008 7:26 pm
von taljeth
Dirty Oerti hat geschrieben:Ich habe Code eingebaut, der den TLB invalidieren müsste, wenn bei einem PageFault eine neue Page gesetzt wird.
"Müsste", weil ich keine Ahnung habe, wie ich das überprüfen könnte.
Ja, das sollte so passen.

Überprüfen kannst du das nur, indem du eine schonmal gemappte Page wieder rausnimmst und an eine andere Adresse mapst. Auf einem realen Rechner müßtest du aus einem Speicherzugriff auf diese Page dann rauskriegen, von welcher physischen Adresse du gelesen hast. In qemu kannst du info tlb im Monitor benutzen.

Re: Paging - Realisierung

Verfasst: Mi Okt 15, 2008 7:30 pm
von Dirty Oerti
taljeth hat geschrieben:
Dirty Oerti hat geschrieben:Ich habe Code eingebaut, der den TLB invalidieren müsste, wenn bei einem PageFault eine neue Page gesetzt wird.
"Müsste", weil ich keine Ahnung habe, wie ich das überprüfen könnte.
Ja, das sollte so passen.

Überprüfen kannst du das nur, indem du eine schonmal gemappte Page wieder rausnimmst und an eine andere Adresse mapst. Auf einem realen Rechner müßtest du aus einem Speicherzugriff auf diese Page dann rauskriegen, von welcher physischen Adresse du gelesen hast. In qemu kannst du info tlb im Monitor benutzen.
Problem dabei ist, dass mir noch die Funktionen fehlen, um so etwas zu realisieren.
Also nicht fehlen..ich habe nur noch keine Wrapperfunktion geschrieben, um das zu automatisieren. (Mappen von VirtAd auf physAd)

qemu benutze ich nicht...ich arbeite mit bochs. Das einzige, was mir dort irgendwie fehlt, ist der debuger?
Unter Windows scheint man eine bochsdbg.exe mitzubekommen, die bochs im Debugmodus aufruft.
Weißt du, wie das unter Linux geht?

Re: Paging - Realisierung

Verfasst: Mi Okt 15, 2008 7:39 pm
von taljeth
Dirty Oerti hat geschrieben:qemu benutze ich nicht...ich arbeite mit bochs. Das einzige, was mir dort irgendwie fehlt, ist der debuger?
Unter Windows scheint man eine bochsdbg.exe mitzubekommen, die bochs im Debugmodus aufruft.
Weißt du, wie das unter Linux geht?
Die Distributionen liefern bochs meistens ohne Debugger aus. Also Source selber ziehen und den passenden Parameter an ./configure übergeben. Das ist dann aber keine eigene Binary, soweit ich weiß, sondern integriert.

Frag mich nicht nach Details, bochs benutze ich selten. Bei qemu kenne ich dagegen sogar den Source relativ gut.

Re: Paging - Realisierung

Verfasst: Mi Okt 15, 2008 7:42 pm
von Dirty Oerti
taljeth hat geschrieben:
Dirty Oerti hat geschrieben:qemu benutze ich nicht...ich arbeite mit bochs. Das einzige, was mir dort irgendwie fehlt, ist der debuger?
Unter Windows scheint man eine bochsdbg.exe mitzubekommen, die bochs im Debugmodus aufruft.
Weißt du, wie das unter Linux geht?
Die Distributionen liefern bochs meistens ohne Debugger aus. Also Source selber ziehen und den passenden Parameter an ./configure übergeben. Das ist dann aber keine eigene Binary, soweit ich weiß, sondern integriert.

Frag mich nicht nach Details, bochs benutze ich selten. Bei qemu kenne ich dagegen sogar den Source relativ gut.
Hatte das damals selbst kompiliert...mal schauen, vllcht kompilier ichs einfach mal neu..

Re: Paging - Realisierung

Verfasst: So Okt 19, 2008 12:31 am
von Dirty Oerti
Hmpf. :?
Versuche mich gerade daran, ein neues PageDirectory zu erstellen.
Irgendwie will das aber nicht so recht...

Und ich raff nicht warum...naja, vllcht morgen.

Ich lese (Paging ist dazu aus) aus dem KernelDirectory die Einträge für die PageTables aus, und schreibe diesen Wert an die Stelle in neuen Directory.
Eigentlich müsste ich so doch den Zeiger auf die PageTable aus dem Kerneldirectory ins Neue Directory kopieren.
Nur den Zeiger, ich sehe keinen Grund, das ganze PageTable neu zu schreiben.

Komischerweise wir irgendwie zu wenig kopiert....viel zu wenig. :x
Dann stürzt danach alles ab (GDT, Heap, etc fehlt..)

*Sich wunder, aber erstmal Schlaf hol*