x86 应用程序在 x64 操作系统中是否使用 64 位地址?

x86 应用程序在 x64 操作系统中是否使用 64 位地址?

我在想... 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 指的是物理内存地址。

相关内容