Autor Thema: Paging mal wieder  (Gelesen 6135 mal)

[MM]

  • Beiträge: 130
    • Profil anzeigen
    • www.mmcoding.eu
Gespeichert
« am: 26. September 2005, 21:30 »
Hallo, ich habe eine Frage zum Paging:
Wenn ich das richtig sehe ist es sinnvoll für jeden Prozess eine eigene Pagetabelle anzulegen, damit er die ganzen 4gb (theoretisch) nutzen kann. So kann nun also das Codesegment bei 0 beginnen und danach direkt das Datensegment folgen und bis 4gb gehen.
Soweit ganz nett, aber was mache ich dann mit den Interrupts (oder Call-Gates)? Ich meine, wenn ich im Gate-Deskriptor als Segment ein Segment aus der GDT angebe, in dem mein Handler zu finden ist, dann bezieht sich doch die Basisadresse in diesem Deskriptor mit Sicherheit auf den physikalischen Adressraum, oder auf den Virtuellen des Kernels.
Oder sollte ich gar nicht für jeden Task eine eigene Pagetabelle anlegen?

MM

Legend

  • Beiträge: 635
    • Profil anzeigen
    • http://os.joachimnock.de
Gespeichert
« Antwort #1 am: 26. September 2005, 21:33 »
Doch, das wird meistens so gemacht, jedoch nicht mit allen 4GB, sondern meistens mit ~3GB. Das restliche GB ist für den Kernel reserviert und in alle Directories identisch gemappt.
*post*

[MM]

  • Beiträge: 130
    • Profil anzeigen
    • www.mmcoding.eu
Gespeichert
« Antwort #2 am: 26. September 2005, 21:59 »
Du meinst also, dass zb das 1. GB in bei jedem Task gleich ist und auf den Kernel-Code mappt? Ich schätze mal, dass dann bei jedem Task das Pagedirectory in den unteren Einträgen auf die selben Pagetabellen zeigen, ja das macht Sinn.

MM

Legend

  • Beiträge: 635
    • Profil anzeigen
    • http://os.joachimnock.de
Gespeichert
« Antwort #3 am: 26. September 2005, 22:38 »
Richtig. Meistens wird aber das Ende des Speichers für den Kernel benutzt. Ist aber wohl relativ egal.
*post*

 

Einloggen