Poniższy obraz pokazuje, w jaki sposób 32-bitowa wirtualna przestrzeń adresowa jest dzielona:
Ale jak dzieli się wirtualną przestrzeń adresową 64-bitowego procesu?
64-bitowa mapa pamięci wirtualnej x86 dzieli przestrzeń adresową na dwie części: dolna sekcja (z górnym bitem ustawionym na 0) to przestrzeń użytkownika, górna sekcja (z górnym bitem ustawionym na 1) to przestrzeń jądra. (Zauważ, że x86-64 definiuje adresy „kanoniczne” „dolna połowa” i „wyższa połowa”, a liczba bitów jest skutecznie ograniczona do 48 lub 56; szczegółowe informacje można znaleźć w Wikipedii ).
Pełna mapa jest szczegółowo udokumentowana w jądrze ; obecnie to wygląda
========================================================================================
Start addr | Offset | End addr | Size | VM area description
========================================================================================
| | | |
0000000000000000 | 0 | 00007fffffffffff | 128 TB | user-space virtual memory
__________________|_________|__________________|_________|______________________________
| | | |
0000800000000000 | +128 TB | ffff7fffffffffff | ~16M TB | non-canonical
__________________|_________|__________________|_________|______________________________
| | | |
ffff800000000000 | -128 TB | ffffffffffffffff | 128 TB | kernel-space virtual memory
__________________|_________|__________________|_________|______________________________
z 48-bitowymi adresami wirtualnymi. (Wariant 56-bitowy ma tę samą strukturę, z 64 PB użytecznej przestrzeni adresowej po obu stronach otworu 16K PB).
W przeciwieństwie do przypadku 32-bitowego „64-bitowa” mapa pamięci jest bezpośrednim odzwierciedleniem ograniczeń sprzętowych.