gpt4 book ai didi

windows - Windows如何不对称地分割其虚拟内存空间?

转载 作者:可可西里 更新时间:2023-11-01 10:12:59 25 4
gpt4 key购买 nike

根据 AMD64 Architecture Programmer's Manual Volume 2 (system programming),逻辑地址只有当 48-63 位与 47 位全部相同时才有效:

5.3.1 Canonical Address Form

The AMD64 architecture requires implementations supporting fewer than the full 64-bit virtual address to ensure that those addresses are in canonical form. An address is in canonical form if the address bits from the most-significant implemented bit up to bit 63 are all ones or all zeros. If the addresses of all bytes in a virtual-memory reference are not in canonical form, the processor generates a general-protection exception (#GP) or a stack fault (#SS) as appropriate.

enter image description here

所以似乎唯一有效的地址范围是 0x0000_0000_0000_0000 ~ 0x0000_7FFF_FFFF_FFFF 和 0xFFFF_8000_0000_0000 ~ 0xFFFF_FFFF_FFFF_FFFF,即较低的 128 TiB 和较高的 128 TiB。然而,根据 MSDN,Windows x64 内核使用的地址似乎并非如此。

In 64-bit Windows, the theoretical amount of virtual address space is 2^64 bytes (16 exabytes), but only a small portion of the 16-exabyte range is actually used. The 8-terabyte range from 0x000'00000000 through 0x7FF'FFFFFFFF is used for user space, and portions of the 248-terabyte range from 0xFFFF0800'00000000 through 0xFFFFFFFF'FFFFFFFF are used for system space.

那么,不管硬件规范如何,Windows 如何将虚拟地址空间分成较低的 8 TiB 和较高的 248 TiB?我想知道为什么它不会对检查地址是否规范的硬件造成任何问题。

**更新:** 微软似乎在 Windows 8.1 中修复了这个差异。参见 https://www.facebook.com/codemachineinc/posts/567137303353192了解详情。

最佳答案

你是对的;当前支持 48 位虚拟地址的 x86-64 硬件要求高 16 位是低 48 位的符号扩展(即第 47 位匹配位 [63:48])。这意味着 0xFFFF0800'000000000xFFFFFFFF'FFFFFFFF 范围的大约一半在当前 x86-64 硬件上是非规范的。

Windows 只是描述了它如何划分完整的 64 位虚拟地址空间,不是当前 x86-64 硬件上实际使用的部分。它当然可以只使用规范的 128 TiB,从 0xFFFF8000'00000000-1。 (注意 8 的位置;它与高 16 字节全一之间没有间隙,这与理论上的 Windows 范围不同。)

高端服务器可以构建 6TiB RAM 甚至更多。 (Xeon Platinum Scalable Processors 显然可用,每个插槽最多 1.5TiB,最多 8 路,例如 8180M)。

英特尔提出了一个扩展,用于增加另一层页表的更大的物理和虚拟寻址,https://software.intel.com/sites/default/files/managed/2b/80/5-level_paging_white_paper.pdf ,因此在我们拥有超过 128TiB 的物理 RAM 的系统之前,如果没有足够的虚拟地址空间来映射所有 RAM(就像过去 PAE 在仅 32 位系统上的糟糕日子一样),操作系统有望不会卡住。

关于windows - Windows如何不对称地分割其虚拟内存空间?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/51241764/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com