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

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

在软件社区中,对于64位应用程序有很多推动,我并不总是预见需要大量内存的应用程序(例如Firefox),所以我只是对运行的好处和缺陷感到好奇在64位平台上的32位应用程序。

做一个谷歌的“russinovich推动极限”,你会发现一系列由sysinternals工具套件的作者在Windows的内存使用的各个方面的笔记本文章。

我不确定在64位操作系统上运行32位应用程序真的存在很多明显的缺陷。 在64上运行64个最大的奖金是内存寻址和…这是一个大的。

即使最新版本的OS X默认为32位(在启动时你可以达到6和4,启动64位内核,但是我不记得所有的内核扩展都能正常工作)。 OS X一直是一个“混合”的操作系统。

我所听到的唯一的缺点是影响64位操作系统的用户,包括驱动程序(一些32位的驱动程序无法正常工作),旧的机器不喜欢64位的操作系统,如果处理器不支持的话,还有很多旧的机器在那里。

开发人员需要确保它能够正常工作,因为有些需要挂钩到64位操作系统的东西需要考虑在内。 但是,许多应用程序在64位操作系统上运行良好。

作为一般原则,如果您的服务器的内存是4GB或更大,则使用64位即可。 甚至微软推荐IIS使用32位应用程序池(或者WS03上的32位模式下的IIS)运行64位操作系统。

64位应用程序有更多的内存开销,这是阻止完全转移到64位的主要原因之一。 而且,一些应用程序在64位上的performance也不尽如人意。 例如,ASP.NET在Web服务器上的32位应用程序池中效果更好。

至于它可以使用的内存限制,这不是一个问题。 64位操作系统打破了这些界限,32位应用程序受益。

如果您的应用程序永远不会使用超过4GB的内存,那么拥有64位版本并没有真正的优势。 也就是说,大多数拥有64位操作系统的人都想要一个64位的版本,即使他们不需要它。

操作系统把内存从哪里抽象出来,它不需要是物理上的第一个4Gbs。

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

dll – 至less是代码部分 – 在所有使用该dll的应用程序中共享。 您运行的64位应用程序以及Windows组件本身将加载并共享标准的64位dll。 当你启动第一个32位的应用程序,它需要加载这些dll的32位版本。