32位程序是否在64位操作系统上实际使用更多内存?

时间:2013-03-27 14:51:25

标签: memory 64-bit cpu

在64位CPU上执行32位程序时,我们可以假设底层硬件将在内存和CPU寄存器中使用32位值来存储整数吗?

鉴于这些设置:

  • Intel i5 + Windows 32位+ 32位应用程序
  • Intel i5 + Windows 64位+ 32位应用程序

请解释每个设置的缺点。使用第二个会不会有效率,因为CPU需要额外的工作来忽略寄存器值的暂停?

2 个答案:

答案 0 :(得分:2)

当x86_64处理器执行32位代码时,它有效地在i686模式下运行。这一切都是在硬件中实现的,因此没有性能损失。

用户空间32位程序将以“32位模式”执行,无论操作系统是32位还是64位,因此行为应该相同。

唯一可能的缺点是程序可能需要动态链接到某些32位库,这些库默认情况下不会安装在64位操作系统上。这种情况在Linux上更为常见,因为程序动态链接到外部库更为常见;我在Windows上可以想到的唯一例子是,如果程序需要Visual C ++运行时库,那么你必须安装它的32位版本(可能与64位版本一起,如果另一个程序需要它)。所以简而言之,您可能需要安装64位的更多内容。

此外,实际的操作系统可能会在64位设置上消耗更多内存,但32位系统的一个缺点是整个系统内存大小限制为4GB(或者由于某些内存空间被映射到大约3.5 GB)硬件)。

答案 1 :(得分:0)