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

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

Die folgende Abbildung zeigt, wie ein virtueller Adressraum eines 32-Bit-Prozesses aufgeteilt wird:

Aber wie wird ein virtueller Adressraum eines 64-Bit-Prozesses aufgeteilt?

Akzeptierte Antwort:

x86

Die virtuelle 64-Bit-x86-Speicherkarte teilt den Adressraum in zwei Teile:Der untere Abschnitt (mit dem obersten Bit auf 0 gesetzt) ​​ist der Benutzerraum, der obere Abschnitt (mit dem obersten Bit auf 1 gesetzt) ​​ist der Kernel-Raum. (Beachten Sie, dass x86-64 „kanonische“ Adressen der „unteren Hälfte“ und der „höheren Hälfte“ definiert, wobei eine Anzahl von Bits effektiv auf 48 oder 56 begrenzt ist; siehe Wikipedia für Details.)

Die komplette Karte ist detailliert im Kernel dokumentiert; derzeit sieht es so aus

Startadresse Versatz Endadresse Größe VM-Bereichsbeschreibung
0000_0000_0000_0000 0000_7fff_ffff_ffff  128 TiB virtueller Benutzerspeicher
0000_8000_0000_0000 +128 TiB ffff_7fff_ffff_ffff ~16 Mio. TiB nicht kanonisch
ffff_8000_0000_0000 -128 TiB ffff_ffff_ffff_ffff  128 TiB virtueller Kernel-Speicher

mit virtuellen 48-Bit-Adressen. (Die 56-Bit-Variante hat die gleiche Struktur, mit 64 PiB nutzbarem Adressraum auf beiden Seiten eines 16K-PiB-Lochs.) 
(Beachten Sie, dass 16KPiB =16MTiB =2 Byte.)

Im Gegensatz zum 32-Bit-Fall ist die „64-Bit“-Speicherzuordnung eine direkte Widerspiegelung von Hardwareeinschränkungen.

ARM

64-Bit-ARM hat eine ähnliche Adressunterscheidung in der Hardware:Die obersten sechzehn Bits sind 0 für den Benutzerbereich und 1 für den Kernelbereich. Linux verwendet 39, 42 oder 48 Bit für virtuelle Adressen, abhängig von der Anzahl der Seitentabellenebenen und der Seitengröße. Bei ARMv8.2-LVA werden weitere vier Bits hinzugefügt, was zu virtuellen 52-Bit-Adressen führt.

Dies ist auch ausführlich im Kernel dokumentiert.


Linux
  1. So beenden Sie einen Zombie-Prozess unter Linux

  2. So installieren Sie vtop unter Linux

  3. So fügen Sie unter Linux Auslagerungsspeicher hinzu

  4. Wie greife ich unter Linux auf physische Adressen aus dem Benutzerbereich zu?

  5. Wie wird die Seitengröße im virtuellen Adressraum bestimmt?

So installieren Sie MX Linux auf einer virtuellen Box

Wie man einen Prozess unter Linux beendet

So ändern Sie die IP-Adresse unter Linux

So erhalten Sie Ihre IP-Adresse unter Linux

So überprüfen Sie den Auslagerungsbereich unter Linux

So finden Sie die IP-Adresse in Linux