Answers:
64位x86虚拟内存映射将地址空间分成两部分:下部(最高位设置为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位”内存映射直接反映了硬件约束。