Autor Thema: Higher Half Kernel wegen invalid Pointers  (Gelesen 2526 mal)

Martin Erhardt

  • Beiträge: 165
    • Profil anzeigen
Gespeichert
« am: 06. February 2013, 20:45 »
Ich bin gerade beim Paging und frage mich Higher-half oder Lower-half.

In OSDEV schreiben sie:
Zitat
.
-It's easier to set up VM86 processes since the region below 1MB is userspace.
-More generically, user applications are not dependent on how much memory is kernel space (Your application can be linked to 0x400000 regardless of whether kernel is at 0xC0000000, 0x80000000 or 0xE0000000 ...), which makes ABI's nicer.
-If your OS is 64-bits, then 32-bit applications will be able to use the full 32-bit address space.
-'mnemonic' invalid pointers such as 0xCAFEBABE, 0xDEADBEEF, 0xDEADC0DE, etc. can be used.
gut falls ich für meine zukünftige 64 Bit OS Portierung mal 32bit oder 64bit Userspace Programme schreiben will werde ich diese Vorteile sicher vermissen ;) und wenn man für den Kernel z.B Fix 256MB einplant ohne das zu verändern, dann sollte des auch gehen.

Aber was soll der letzte Grund bedeuten(Wieso sind CAFEBABE DEADBEEF) "invalid pointers" und wieso kann man die bei einem Higher Half Kernel doch verwenden??
« Letzte Änderung: 06. February 2013, 20:48 von Martin Erhardt »

Jidder

  • Administrator
  • Beiträge: 1 625
    • Profil anzeigen
Gespeichert
« Antwort #1 am: 06. February 2013, 21:05 »
Damit ist gemeint, dass diese Zeiger im User Space ungültig sind, wenn der Kernel Space bei 0xC0000000 beginnt. Das heißt Programme können diese Werte zum Beispiel bei der Implementierung von Datenstrukturen als Indikator für "leeres/ungültiges/gelöschtes Element" verwenden. Versucht fehlerhafter Code diese Werte als Zeiger zu verwenden, wird ein Page Fault ausgelöst. Wenn man diese Adresse (im Gegensatz zu 0 oder einer zufälligen Adresse) in der Meldung vom Page Fault sieht, kann das gegebenenfalls bei der Fehlersuche helfen.
Dieser Text wird unter jedem Beitrag angezeigt.

 

Einloggen