在64位的Windows上安装32位或64位应用程序有什么区别?

19

显然,在64位的Windows系统(Vista或7)上可以安装32位和64位编译的应用程序。

为什么这两个版本都能在64位操作系统上运行?在64位操作系统上安装64位应用程序是否是一个好习惯?同时使用32位应用程序和64位操作系统有什么好处或坏处吗?

谢谢!

5个回答

27

为什么两个版本都能在64位操作系统上运行呢?

如果操作系统不能运行旧的(32位)应用程序,那么没有人会想使用它。所以他们必须找到一种方法。

在64位操作系统上安装64位应用程序是一个好习惯吗?

通常是的,它们可以使用更多内存,可能会运行得更快。但是,64位应用程序无法调用32位DLL,因此您可能会遇到问题。

将32位应用程序与64位操作系统结合使用有什么优缺点吗?

实际上没有,除非它们不能使用超过4GB的RAM,并且可能比在相同硬件上运行32位操作系统慢一些。


谢谢Michael!例如,如果您在计算机上安装了64位版本的Outlook,并且它正在从我的(32位)应用程序中读取32位DLL,则可能会触发一些错误...?此外,在编译要安装在64位系统上的应用程序时,是否也将所有DLL编译为64位? - Alex
2
@Andrei:是的,那样行不通。您不能在同一操作系统进程中混合使用64位和32位代码。因此,如果您为64位操作系统编译应用程序,则必须为DLL执行相同操作,并且我期望IDE会这样做。 - Michael Borgwardt
如果您安装了32位版本的Outlook并且使用我应用程序中编译的64位DLL,那么问题是否相同? - Alex

9
64位版本的Windows带有一个Windows on Windows 64(WOW64)子系统,使其能够运行32位应用程序。整个过程实际上非常复杂,您可以在以下链接中阅读相关信息:如何在Windows 7 / Vista 64位系统上支持32位应用程序 如果您有64位操作系统并且应用程序提供了64位版本,请安装它。如果没有,安装32位版本也不会有影响。
能够在同一台机器上组合32位和64位应用程序的明显优势在于,并非所有供应商都提供其应用程序的64位版本。允许您同时运行两者的操作系统将为您提供更广泛的软件选择。

4

并非所有程序都有64位版本。

通常情况下,应尽可能使用64位应用程序。

混合使用32位和64位应用程序很麻烦,也不是一个好主意。通常只在必要时(回到我之前的观点)才这样做。


@0xA3:该说法的真实性随时间而变化。当然,您可以基于自己的经验不同意这一点,但是现在我发现几乎没有理由偏爱32位版本的应用程序,如果它也有64位版本的话。 - Marcelo Cantos
除了兼容性和可能的迁移成本之外,我认为64位应用程序需要更多的内存来存储相同数量的数据,这是由于指针大小的增加和不同的对齐/填充所致。这可能会影响处理器缓存利用率,请参见http://en.wikipedia.org/wiki/64-bit#Pros_and_cons。因此,我的观点是,它取决于您的应用程序是否真正有意义使用64位。 - Dirk Vollmar
@0xA3:对于大多数应用程序类别来说,额外的内存可以忽略不计。我只能重申我的上一个观点:现在几乎从来不会有影响。 - Marcelo Cantos

3
根据实际实现,32位应用程序需要一些特殊处理才能在64位操作系统上运行,而64位应用程序将在64位操作系统上“本地”运行,因此应该会运行得更好(例如可以访问更多内存)。这种“特殊处理”可能只是运行指令集的子集,但它将需要编组等操作。因此,如果有64位版本的程序可用,安装64位版本的程序是有意义的。
然而,商业上允许32位程序运行是有意义的,因为比64位应用程序更多。随着时间的推移,仍在销售的应用程序将被升级,可能会到来一个未来版本的Windows不支持32位程序(就像16位程序已经被淘汰一样)。

@Marcelo - 好的,“仿真”这个词用得不太好。我会看看能不能想出更好的说法。 - ChrisF

3
现代处理器采用x64等体系结构,可以执行32位和64位应用程序。
32位操作系统只能分配4GB内存(2^32 = 4294967296),而64位操作系统可以分配更多内存(2^64 = 18446744073709551616)。
在64位操作系统上安装64位应用程序是一个好习惯,因为如果您的计算机内存超过4GB,它们将能够使用所有内存。

网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接