Paging - Realisierung

Low-Level-Programmierung und Experimenteller Kernel; Ansprechpartner: Dirty Oerti
nufan
Wiki-Moderator
Beiträge: 2557
Registriert: Sa Jul 05, 2008 3:21 pm

Re: Paging - Realisierung

Beitrag von nufan » Mi Okt 15, 2008 6:53 pm

DirtyOerti hat geschrieben:(Revision 49)
Wow, ging ja schnell. Muss mal wieder updaten :)

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

Re: Paging - Realisierung

Beitrag von Dirty Oerti » Mi Okt 15, 2008 7:08 pm

dani93 hat geschrieben:
DirtyOerti hat geschrieben:(Revision 49)
Wow, ging ja schnell. Muss mal wieder updaten :)
Gab in letzter Zeit einige kleinere Änderungen ;)
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.

taljeth
Beiträge: 18
Registriert: Di Okt 14, 2008 8:22 pm
Kontaktdaten:

Re: Paging - Realisierung

Beitrag von taljeth » Mi Okt 15, 2008 7:26 pm

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.

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

Re: Paging - Realisierung

Beitrag von Dirty Oerti » Mi Okt 15, 2008 7:30 pm

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?
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.

taljeth
Beiträge: 18
Registriert: Di Okt 14, 2008 8:22 pm
Kontaktdaten:

Re: Paging - Realisierung

Beitrag von taljeth » Mi Okt 15, 2008 7:39 pm

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.

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

Re: Paging - Realisierung

Beitrag von Dirty Oerti » Mi Okt 15, 2008 7:42 pm

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..
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: Paging - Realisierung

Beitrag von Dirty Oerti » So Okt 19, 2008 12:31 am

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*
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