GNU/Linux >> Znalost Linux >  >> Linux

Linux – Jak je v Linuxu rozdělen 64bitový procesní virtuální adresní prostor?

Následující obrázek ukazuje, jak je rozdělen virtuální adresní prostor 32bitového procesu:

Ale jak je rozdělen virtuální adresní prostor 64bitového procesu?

Přijatá odpověď:

x86

64bitová mapa virtuální paměti x86 rozděluje adresní prostor na dva:spodní část (s horním bitem nastaveným na 0) je uživatelský prostor, horní část (s horním bitem nastaveným na 1) je prostor jádra. (Všimněte si, že x86-64 definuje „kanonické“ adresy „dolní poloviny“ a „vyšší poloviny“ s počtem bitů efektivně omezeným na 48 nebo 56; podrobnosti naleznete na Wikipedii.)

Kompletní mapa je podrobně zdokumentována v jádře; aktuálně to vypadá

Spustit adr Odsazení Ukončit adresu Velikost Popis oblasti virtuálního počítače
0000_0000_0000_0000 0000_7fff_ffff_ffff  128 TiB virtuální paměť uživatelského prostoru
0000_8000_0000_0000 +128 TiB ffff_7fff_ffff_ffff ~16M TiB nekanonický
ffff_8000_0000_0000 -128 TiB ffff_ffff_ffff_ffff  128 TiB virtuální paměť v prostoru jádra

se 48bitovými virtuálními adresami. (56bitová varianta má stejnou strukturu s 64 PiB použitelného adresního prostoru na každé straně otvoru 16K PiB.) 
(Upozorňujeme, že 16KPiB =16MTiB =2 bajty.)

Na rozdíl od 32bitového případu je „64bitová“ mapa paměti přímým odrazem hardwarových omezení.

ARM

64bitový ARM má podobné rozlišení adres v hardwaru:horních šestnáct bitů je 0 pro uživatelský prostor, 1 pro kernel-space. Linux používá pro virtuální adresy 39, 42 nebo 48 bitů v závislosti na počtu úrovní tabulky stránek a velikosti stránky. S ARMv8.2-LVA jsou přidány další čtyři bity, což vede k 52bitovým virtuálním adresám.

To je také podrobně zdokumentováno v jádře.


Linux
  1. Jak zabít proces zombie na Linuxu

  2. Jak nainstalovat vtop na Linux

  3. Jak přidat odkládací prostor v linuxu

  1. Adresový prostor 32bitového procesu v 64bitovém linuxu

  2. Jak získat přístup k fyzickým adresám z uživatelského prostoru v Linuxu?

  3. jak se určuje velikost stránky ve virtuálním adresovém prostoru?

  1. Jak zjistit svou IP adresu v Linuxu

  2. Jak zkontrolovat místo na disku v Linuxu

  3. Jak vypsat běžící procesy v Linuxu