GNU/Linux >> LINUX-Kenntnisse >  >> Linux

Der Adressraum des 32-Bit-Prozesses unter 64-Bit-Linux

Unter Berufung auf die Kernel-Quelle:„Kernel-Zeiger haben redundante Informationen, daher können wir ein Schema verwenden, bei dem wir entweder einen Fehlercode oder einen [...] Zeiger mit demselben Rückgabewert zurückgeben können.

Die Werte -1..-4095 (Zuordnung zu 0xfffff000–0xffffffff im 32-Bit-Modus) sind für Kernel-Level-Errno-Werte reserviert. Die anderen 4KB von 0xffffe000–0xffffefff werden für die magische Seite vsyscall vdso freigehalten, aber da die vdso-Seite seit vielen Monden verschiebbar ist, bleibt dieser Bereich potenziell unbevölkert, nämlich der [stack] Eintrag in /proc/*/maps endet immer bei 0xffffdfff, unabhängig davon, ob [vdso] bei 0xffffe000 oder anderswo abgebildet wird.


Ein Teil des Kernelspeichers kann sich innerhalb des Adressraums des Anwendungsbenutzerbereichs befinden und mit PROT_NONE sozusagen mmaped werden . Ein Teil des Adressraums würde dann verwendet werden, ohne dass das Programm darauf zugreifen kann (daher ist keine Beschädigung möglich).


Linux
  1. Linux – Unterschied zwischen User Space und Kernel Space?

  2. Linux – Was sind High Memory und Low Memory unter Linux?

  3. Suchen von 32-Bit-Bibliotheken unter 64-Bit-Linux

  4. Wie kann man feststellen, ob eine Linux-Binärdatei 32-Bit oder 64-Bit ist?

  5. 32-Bit-, 64-Bit-CPU-Betriebsmodus unter Linux

Ist Linux ein Betriebssystem oder ein Kernel?

Linux-Kernel vs. Mac-Kernel

So finden Sie die IP-Adresse unter Linux

Linux – Wie wird ein virtueller 64-Bit-Prozess-Adressraum in Linux aufgeteilt?

So erkennen Sie, ob es sich um eine 32-Bit- oder 64-Bit-Version von Linux handelt

Wie kann ich überprüfen, ob das Linux-System 32-Bit oder 64-Bit ist?