64 位操作系统上的 32 位应用程序

64 位操作系统上的 32 位应用程序

除了 4GB 的内存大小限制之外,在 64 位操作系统上运行 32 位应用程序的代价是什么?例如,32 位应用程序是否要求在前 4 GB 内分配地址空间,还是操作系统和处理器会将其从应用程序中抽象出来?

软件社区中对 64 位应用程序的推动非常大,但我并不总是能预见到需要如此大内存的应用程序(例如 Firefox),所以我只是好奇在 64 位平台上运行 32 位应用程序的优点和缺点。

答案1

在 Google 上搜索“russinovich push limits”,您会找到由 Windows 系统内部工具套件的作者撰写的一系列关于 Windows 内存使用各个方面的文章。

我不确定在 64 位操作系统上运行 32 位应用程序是否真的有很多重大缺点。在 64 位操作系统上运行 64 位应用程序的最大好处是内存寻址,这是最大的好处。

即便是最新版本的 OS X 也默认为 32 位(启动时按 6 和 4 可启动 64 位内核,但我记得并非所有内核扩展都能正常工作)。OS X 长期以来一直是“混合”操作系统。

我所听说过的影响 64 位操作系统用户的唯一缺点是驱动程序(某些 32 位驱动程序无法正常工作)以及如果处理器不支持 64 位操作系统,旧机器就不喜欢 64 位操作系统,而且目前仍有很多旧机器。

答案2

开发人员必须确保其正常运行,因为需要考虑一些需要与 64 位操作系统挂钩的事情。不过,许多应用程序在 64 位操作系统上运行良好。

一般而言,如果您的服务器内存为 4GB 或更大,则使用 64 位是最佳选择。Microsoft 甚至建议 IIS 运行 64 位操作系统和 32 位应用程序池(或在 WS03 上以 32 位模式运行整个 IIS)。

64 位应用程序的内存开销更大,这是阻碍全面迁移到 64 位的主要原因之一。此外,有些应用程序在 64 位上的表现并不好。例如,ASP.NET 在 Web 服务器上的 32 位应用程序池中表现更好。

至于它可以使用的内存是否有限制,这没什么可担心的。64 位操作系统打破了这些限制,32 位应用程序从中受益。

答案3

如果您的应用程序永远不会使用超过 4GB 的内存,那么 64 位版本就没有什么实际优势。也就是说,大多数使用 64 位操作系统的人都希望所有东西都有 64 位版本……即使他们不需要它。

答案4

操作系统抽象了内存的来源,它不需要是物理上的前 4Gbs。

在 64 位操作系统上运行 32 位应用程序的另一个缺点是,该应用程序现在需要加载一堆 32 位 dll,并增加机器的内存使用量。

dll(至少是代码部分)在大多数情况下由使用该 dll 的所有应用程序共享。您正在运行的 64 位应用程序以及 Windows 组件本身将加载和共享标准 64 dll。当您启动第一个 32 位应用程序时,它需要加载这些 dll 的 32 位版本。

相关内容