我在想... 64 位操作系统可以运行 32 位应用程序,对吗?Windows 使用 WoW64 来实现这一点,对吗?
我的问题是,当这些应用程序运行时,它们使用的是 64 位还是 32 位地址?我因为内存使用情况而感到疑惑……
答案1
在内部,每个程序都可以看到大约 2GB 的内存空间(可以设置标志以获取 3GB),因此永远不需要 64 位指针(32 位指针就可以正常工作)。操作系统可以在后台处理所有 64 位实际内存管理。
不太确定这与内存使用有什么关系。
答案2
32 位应用程序只能看到 32 位地址。WoW64 为 32 位应用程序在 64 位内存空间内模拟 32 位环境。
答案3
您的问题不太具体,因为您没有区分虚拟内存地址和物理内存地址。
是的,x86 程序将使用更多内存和资源。它们将具有 32 位虚拟地址空间,但底层内存管理器 (MM 或 MMM) 将使用 x64 指针。不过这并不需要花费很多精力。
到目前为止,最大的资源成本是驱动程序。一些重大的内核变化,其中许多是出于安全考虑,需要重写大部分驱动程序。
在内部,每个程序都可以看到大约 2GB 的内存空间(可以设置标志以获取 3GB),因此永远不需要 64 位指针(32 位指针就可以正常工作)。操作系统可以在后台处理所有 64 位实际内存管理。
我认为这是不正确的。每个程序都可以看到 4GB(32 位虚拟地址空间),但内核将物理地址空间一分为二。您熟悉的两个 2GB 指的是物理内存地址。