Autor Thema: 4 MB Pages  (Gelesen 6408 mal)

nooooooooos

  • Beiträge: 734
    • Profil anzeigen
Gespeichert
« am: 11. March 2006, 19:52 »
Hallo

1.) Kann ich im PageDirectory des Kernels 4M Pages eintragen obwohl eigentlich der ganze Speicher in 4 KB Pages segmentiert ist ??? Ich will nämlich im Kernel den ganzen Speicher ansprechen und 1024 PageTables zu beschreiben dauert zu lange und braucht zu viel Speicher.
2.) Wie sieht ein 4MB-Eintrag im PageDirectory aus ????

Vielen Dank
Noooooooooooos

GhostCoder

  • Beiträge: 187
    • Profil anzeigen
Gespeichert
« Antwort #1 am: 12. March 2006, 13:08 »
A man, a legend!

nooooooooos

  • Beiträge: 734
    • Profil anzeigen
Gespeichert
« Antwort #2 am: 12. March 2006, 13:40 »
Wie unterscheidet sich denn im PageDirectory ein Eintrag auf eine PageTable zwischen einem Eintrag auf eine 4MB Page ???

nooooooooos

  • Beiträge: 734
    • Profil anzeigen
Gespeichert
« Antwort #3 am: 12. March 2006, 17:34 »
Ich hab herausgefunden dass man für 4MB Pages das 4. Bit im CR4 setzen muss. Gelesen getan:xor eax,eax
mov eax,cr4
or eax,0x0000000000010000b
mov cr4,eax


Bochs meldet allerdings:MOV_RdCd: read of CR4und:#GP(0): SetCR4: Write of 0x0010000b not supported (allowMask =0x6fc)

Bochs zeigt an, dass er PSE unterstützt.
Was bedeutet das ???


Gruss
Noooooooooos

nooooooooos

  • Beiträge: 734
    • Profil anzeigen
Gespeichert
« Antwort #4 am: 26. March 2006, 10:55 »
Also das Problem ist jetzt gelöst.
Da ja aber die 4MB-Pages erst bei neueren Prozessoren möglich sind, muss ich eine Alternative anbieten.

Wie finde ich aber heraus ob 4MB Pages möglich sind?
Muss ich CPUID benutzen oder kann ich einfach das entsprechende Bit im CR4-Register setzen und nachher überprüfen ob es erfolgreich gesetzt wurde?


Gruss
Nooooooooooooos

Legend

  • Beiträge: 635
    • Profil anzeigen
    • http://os.joachimnock.de
Gespeichert
« Antwort #5 am: 26. March 2006, 14:19 »
CPUID klingt zumindestens sauberer ...
*post*

nooooooooos

  • Beiträge: 734
    • Profil anzeigen
Gespeichert
« Antwort #6 am: 27. March 2006, 18:11 »
Ist aber komplizierter und braucht mehr Rechen-Zeit, weshalb ich die andere Methode vorziehen würde, falls sie funktioniert.

 

Einloggen