这个问题是 2012 年提出的。如果你在 2019 年或之后读到这个问题,那么答案确实是:不。2019 年没有理由维护 32 位桌面操作系统。
原始问题如下:
服务器软件现在已经只支持 64 位一段时间了(自 Windows Server 2008 R2 以来,Exchange 和 Sharepoint 甚至更早),甚至 Ubuntu 也在推行远离 32 位版本的服务器操作系统。
但是,是否有任何好的、可量化的理由来维护 32 位桌面操作系统?我们正在为少数(不幸的?)早期采用者准备 Windows 8 映像。
我们大多数的台式计算机都有 4GB 或更少的 RAM,但我希望不再需要支持 32 位操作系统。
我为什么要这么做?
答案1
在某些用例中,32 位可能稍快一些——地址越小,代码就越紧凑,也就意味着缓存效率更高。在我见过的基准测试中,在计算量大的环境中,这种效率往往会被 64 位更高的计算效率所掩盖。但实际上,32 位确实偶尔会在某些基准测试中获胜。YMMV。软件的年龄很重要,因为较新的版本利用了 64 位的东西,而较旧的版本则没有。
代码越紧凑,磁盘空间就越小。只需下载您最喜欢的操作系统的 64 位和 32 位 ISO 即可看到区别。这可不是一件小事。而且也相当多更多的一旦解压缩二进制文件。正如 OrangeDog 指出的那样:大部分空间消耗来自于这样一个事实:64 位操作系统除了 64 位库之外还附带 32 位库。
使用 32 位,您仍然可以获得与旧组件和软件更好的兼容性。这在主机上动态编译但同时引入第三方二进制库的系统中尤其明显。微软的 .NET 框架就是一个很好的例子:虽然这些程序在理论上与体系结构无关,但只要您链接到本机二进制文件,就会绑定到一个或另一个架构。许多开发人员甚至不知道这种情况正在发生,并且交付的生产组件将无法在 64 位系统上运行,除非进行一些调整以明确指示 .NET 在 32 位模式下运行。大多数人不知道如何做到这一点。
正如 Daniel B 所指出的:在 64 位计算机上进行 Windows .NET 开发会让您面临令人沮丧的不一致在某些情况下,异常会被操作系统屏蔽。
旧式硬件。您无法在 64 位内核上运行 32 位驱动程序。
对大多数人来说,这些都不算什么大问题。不过,你还是得决定这些因素会如何影响你的环境。
答案2
我能想到的保留 32 位桌面操作系统的唯一原因是如果您使用旧的 16 位(例如 DOS)程序并且没有支持 Windows Virtual PC 的 Windows 版本。
(即使那样,我也会安装 64 位操作系统并使用类似 DOSbox 之类的程序)。
编辑:实际上还有另一个原因:硬件无法处理超过 4GB 的地址空间。例如 FireWire 尝试执行 DMA。或者任何没有 64 位驱动程序的(旧)硬件。
答案3
任何能运行 Windows 8 的设备都已经具备 64 位功能,除非你恰好拥有一些第一代 Intel Atom 上网本(我对此非常怀疑)。这是我唯一能想到的。
AMD 于 2003 年发布了其首款 64 位 Opteron;从那时起,他们生产的几乎所有处理器都支持 64 位。
英特尔一年后,于 2004 年发布了其首款 64 位 Xeon(Nocona),并于 2006 年扩展到几乎整个产品线。除了前面提到的早期 Atom 芯片外,如今每款英特尔处理器都是 64 位的。
如果你感兴趣的话,维基百科有一个细分的处理器列表古代历史。
答案4
64 位机器的内存地址自然占用 64 位。在 32 位机器中,这些相同的地址占用 32 位。在某些非常特殊的情况下,所需位数的“增加”可能是内存有限的机器上良好性能和糟糕性能之间的差异。
除此之外,由于您很可能在一台可以运行 64 位软件的机器上运行 32 位软件,而 64 位机器对 32 位软件的支持也相当不错,因此硬件方面的差异并不大。有时您会发现一台旧设备没有 64 位硬件驱动程序,但由于 64 位操作系统已经问世十多年,这种情况现在非常罕见。
需要考虑的一点是,许多较旧的 32 位应用程序在很多方面都比其位数要旧。在 Windows 操作系统方面,如果 32 位应用程序在“Program Files”中查找现在位于“Program Files (x86)”中的文件,它可能会感到困惑。某些注册表项同样可能需要手动关注。同样,这更像是编写有误的应用程序的功能,现在需要您的帮助来“找到”如果机器恰好是 32 位,本来可以“正常工作”的东西。