回答:
64ビットのx86仮想メモリマップは、アドレス空間を2つに分割します。下部セクション(上部ビットが0に設定されている)はユーザー空間であり、上部セクション(上部ビットが1に設定されている)はカーネル空間です。(x86-64は「正規」「下位半分」および「上位半分」アドレスを定義し、ビット数は事実上48または56に制限されていることに注意してください。詳細はWikipediaを参照してください。)
完全なマップはカーネルで詳細に文書化されています。現在のように見えます
========================================================================================
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
__________________|_________|__________________|_________|______________________________
48ビットの仮想アドレス。(56ビットバリアントは同じ構造で、16K PBホールの両側に64 PBの使用可能なアドレススペースがあります。)
32ビットの場合とは異なり、「64ビット」のメモリマップはハードウェアの制約を直接反映しています。