MemTest86显示内存地址空间大于物理量

MemTest86显示内存地址空间大于物理量

在具有 4 GB RAM 的笔记本电脑上,我认为内存地址应该从字节开始0并在之前结束0x1_0000_0000(_ 是为了清楚起见添加的分隔符),但 MemTest86 说它结束于0x1_6060_0000,但这不是多了 1542 MB 吗?

类似地,在具有 16 GB RAM 的台式计算机上,我认为它应该以 结尾0x4_0000_0000,但 MemTest86 说0x4_2F60_0000,这大了 758 MB。

为什么 MemTest86 显示的地址空间大于实际的物理内存量?

答案1

这在现代系统中是一种非常常见的情况。并且有充分的理由。

几十年前,计算机就拥有内存映射硬件设备。这是一种特殊的硬件,CPU 可以像访问内存一样访问它。它用于与视频系统等硬件设备进行快速通信。如果没有它,计算机的性能将受到严重影响。

为了与 32 位操作系统兼容,此内存映射硬件必须出现在底部 4 GB 地址范围内。在现代系统中,这意味着至少有几百 MB,这是相当可观的。由于内存映射硬件和 RAM 不能存在于同一地址,因此相当一部分 RAM 将无法访问。这就是 32 位版本的 Windows 无法看到所有 4 GB RAM 的原因。

这不是个好情况。但至少对于那些可以处理这种情况的操作系统来说,有一个解决方案。解决方案是将那些原本无法访问的 RAM 部分重新映射到 4 GB 以上的地址。这就是您所看到的。为了 32 位操作系统的利益,尽可能多的 RAM 将留在 4 GB 以下的地址上。

此内存重新映射由计算机硬件和 BIOS 完成,因此适用于任何操作系统。现代 64 位操作系统和内存测试程序就是为此而设计的。由于技术原因,Windows 的 32 位客户端版本将忽略所有超过 4 GB 的内存。在现代操作系统中,应用程序永远不会看到物理 RAM 地址,因此内存映射对它们来说并不重要。

相关内容