Autor Thema: Segmentierung  (Gelesen 12987 mal)

GhostCoder

  • Beiträge: 187
    • Profil anzeigen
Gespeichert
« am: 24. May 2005, 14:06 »
Hiho,

ich will mein OS jetzt mehr an den x86 binden als vorher, und daher soll jetzt auch die Segmentierung ausgereitzt werden.

Nur frage ich mich, ob das wirklich einen erheblichen Geschwindigkeitsvorteil bringt, nur ein Pagedirectory(4GB) zu nutzen, den sich dann alle Prozesse teilen?

Das einzige was ich mir dann ja spare ist der Wechsel des PageDirectories beim Contextswitch.
Und der wird ja auch beim TSS geändert, ob ich will oder nicht...

Außerdem gibt es ja auch SYSENTER/SYSCALL Opcodes, die den Geschwindigkeitsvorteil wieder (fast) aufheben...

Also die Frage: Lohnt sich die ganze Abhängikeit vom x86er Modell oder läuft nen neuer Kernel mit 4GB VM pro Prozess mittlerweile genauso schnell?

Gruß, GhostCoder
A man, a legend!

Roshl

  • Beiträge: 1 128
    • Profil anzeigen
    • http://www.lowlevel.net.tc
Gespeichert
« Antwort #1 am: 24. May 2005, 19:51 »
Eigentlich ist es am besten für jeden Task eigene Pagetables zu haben, von der Geschwindigkeit her fällt dir das sicher kaum auf. Ab dem Pentium 2 glaub ich gibt es sowas wie globale Pages die werden beim Contextswitch nicht aus dem Cache entfernt, also ist das so egal. Und da beim Taskswitch sowieso neu geladen wird, ist es egal ob du immer ein und das selbe benutzt, die CPU weiss das nicht.
[schild=1]Wieder ein wertvoller(?) Beitrag von Roshl[/schild]

Legend

  • Beiträge: 635
    • Profil anzeigen
    • http://os.joachimnock.de
Gespeichert
« Antwort #2 am: 25. May 2005, 17:51 »
Was du tun kannst mit Segmenten - Local Procedure Calls als Far Calls implementieren, wohl viel schneller als mit page dir switch.

Wie du schon selber festgestellt hast an einem Beispiel, ist ne Kombination von Paging und Segmenten problematisch. Besonders steigt die Komplexität deutlich an und das dürfte sich auf Dauer auch auf das Tempo auswirken bei wirklich kritischen Operationen.
*post*

 

Einloggen