32位操作系统上的32位程序和64位操作系统上的32位程序有什么区别?

时间:2015-07-08 13:21:45

标签: windows 32bit-64bit 32-bit

在我的电脑上,它在64位处理器上运行32位操作系统。所以安装的所有应用程序都是32位,我的计算机有2GB RAM。如果我在保持相同的32位应用程序的同时安装64位操作系统,这会改善性能吗?还是有任何不利之处?

3 个答案:

答案 0 :(得分:2)

讨论32位和64位软件意味着开发此类软件是为了利用具有32位或64位寄存器大小的CPU。

寄存器是处理单元直接使用的存储器(不是RAM)的微小部分,用于临时保存操作结果(变量种类),例如,当两个数字相加时,ALU从两个寄存器读取,执行操作并将答案写入另一个寄存器。这些寄存器越大,它可以处理的值越大。 32位处理器的寄存器数可以处理最大32位大小的值,而64位处理器可以处理双倍大小的数字,而不是基于32位的处理器, 导致2 ^ 32个更多值。

32位操作系统是在具有32位CPU寄存器的机器上执行CPU操作的操作系统。 64位操作系统在64位处理器上运行良好,但在32位处理器上运行不正常,因为它们的寄存器对于这样的操作系统来说太小了。

当一个程序在一个操作系统上运行时,32位应用程序将在64位操作系统上运行(好吧,大部分时间都是这样),尽管它们只使用他们需要的任何CPU寄存器的一半,因为该程序是设计的不处理大于2 ^ 32位的值:这意味着在64位操作系统上运行的32位应用程序将运行而不会获得任何特定的性能提升。同样,64位应用程序永远不会在32位操作系统上运行,因为它需要比实际可用资源更多的资源。

希望我足够清楚和正确,多年前我研究过处理器架构......

答案 1 :(得分:1)

这适用于x86 / x86_64上的64位应用程序:

  • 64位系统将消耗更多RAM,最重要的是缓存因为指针较大。如果有很多指针,这可能是性能瓶颈。
  • 64位系统将为您提供两倍的寄存器,两倍大。这使得可以在寄存器中存储更多变量,这将是性能提升。

因此,选择可能取决于您决定使用哪种应用程序。

答案 2 :(得分:0)

64位的意思是应用程序可以使用超过2GB的虚拟内存。如果你有超过4GB的RAM并且你的应用程序需要使用超过2GB的内存(sql server!),那么可能会有一个性能内存(因为它可以在内存中存储更多页面而不是从磁盘读取它们)

如果不是这种情况并且你拥有相同数量的内存,那么你将无法获得性能提升,并且可能会略微减少(假设你在这里的Windows上)来处理在64位上运行的32位应用程序bit o / s有一个复杂的重定向系统(应用程序要求system32并发送到syswow64) - 其中一些很简单但有些像com注册查找可能导致许多reg打开引擎盖(做一个regopen for一个不存在的clsid,看看kernel32使用procmon代表你做了多少!)。

因此,除非你有一个非常具体的用例,听起来你没有,它不会更快