【发布时间】:2021-01-06 13:19:48
【问题描述】:
我正在读一本关于虚拟内存的书:
下面是我的问题
Q1-既然我们主要使用64位机器,为什么虚拟地址只有48位?不应该是 64 位虚拟内存吗?
编者注:此部分与Why do x86-64 systems have only a 48 bit virtual address space?完全相同
(编者注:此部分与Why in x86-64 the virtual address are 4 bits shorter than physical (48 bits vs. 52 long)?完全相同)
Q2-为什么物理内存(52位)的地址空间大于虚拟内存(48位),不应该是虚拟内存的地址空间应该大于物理内存的吗?
(编者注:这部分是几个问题的重复,包括Is a process' page table mapped to Kernel address space?和Where is page table located?)
Q3-我的理解是:所有存储在内核内存中的页表对用户是不可见的,我的理解正确吗?
【问题讨论】:
-
我编辑了您问题的标签,因为它与 Linux 无关,而是与 x86 CPU 架构有关。
-
请edit你的问题解释你有什么样的Linux软件。
-
@MartinRosenau:你知道(在 2020 年)任何一台内存超过 4 TB 且不运行 Linux 或至少不运行 Linux 的计算机吗?FreeBSD?如果你这样做,请通过电子邮件与我联系
basile@starynkevitch.net -
英特尔的 CPU 都不支持 52 个地址位。实际上,正如您所建议的,它们都支持比虚拟地址位更少的物理地址位。您可以使用 EAX = 80000008H 的 CPUID 找出物理地址位数。
-
当 Intel 处理器支持 52 个物理地址位时,它们肯定也会支持具有 57 位虚拟地址的5-level paging。
标签: x86-64 cpu-architecture virtual-memory page-tables