如您链接到的文章中所述,32 位 CPU 上可用的 4GB 地址空间分为两部分:用户模式或应用程序地址空间,以及内核模式地址空间。
用户模式地址空间是每个进程的。每个进程在用户模式地址空间中的页面和物理或虚拟内存之间都有不同的映射。
无论当前正在运行哪个进程,内核模式地址空间都是相同的。否则,每次转换到内核模式时都必须重新映射地址空间,这将非常低效。(文章确实这么说,但只是非常简短:“操作系统使其虚拟内存在每个进程的地址空间中可见”。)
默认情况下,32 位 Windows 将其平均划分为 2GB 用户空间和 2GB 内核空间,但可以配置为将其划分为 3GB/1GB。
在 x64 Windows 上,内核以 64 位模式运行,因此它可以访问 CPU 允许的完整地址空间,目前为 48 位或 256TB。第一个 x64 Windows 版本仅使用 16TB 的地址空间,平均分配:8TB 用于应用程序地址空间(用于 64 位应用程序)和 8TB 用于内核。在 Windows 8.1 中,这增加了使用 CPU 允许的全部 256TB,再次平均分配:128TB 用于 64 位应用程序,128TB 用于内核。
32 位应用程序在 WOW64 仿真环境中运行,CPU 在传统模式下运行。但是,内核永远不会在传统模式下运行。当需要内核转换时,CPU 必须从 legacy 模式切换到 long 模式,这也意味着它从 32 位地址空间切换到 64 位地址空间。x64 CPU 的设计使这种转换是高效的。
因此,没有必要为内核保留任何32 位地址空间。
为确保向后兼容性,其可执行文件未标记为大地址感知的 32 位进程仍被限制为 2GB 的地址空间。如果可执行文件可识别大地址,则该进程将获得全部 4GB。
您应该注意,这实际上是地址空间,而不是内存甚至虚拟内存。32 位应用程序可以使用文件映射和其他方法来使用超过 4GB 的内存。
您还应该注意,进程可以访问 2GB/3GB/4GB 的地址空间这一事实并不意味着应用程序可以使用所有这些空间。Windows 在每个进程中为自己保留一些用户模式地址空间。
地址空间和其他限制在此处记录:Windows 和 Windows Server 版本的内存限制。