为什么在64位操作系统中,32位操作系统的4GB内存不等于2GB?

时间:2012-12-14 03:09:26

标签: architecture computer-vision 32bit-64bit computer-architecture

据我所知,“32位”等于2 ^ 32,这意味着我可以使用32位操作系统定义4GB内存。并且“64位”是2 ^ 64,允许15EB。因此,使用64位操作系统,我们可以在计算机中放入更多内存。

但是,我对另一点感到困惑。

我们可以在32位的情况下看到我们在系统中有(比方说)4GB的物理内存,我们将4GB除以32位整数的大小,我们可以存储一些整数(称之为N)在记忆中。 并且,在64位中,计算是4GB除以64位整数的大小,因此我们只能存储一半的整数。结果,对于64位,我们不能存储具有相同内存的整数。

这是否意味着微软通过在32位和64位版本的操作系统中将此内存显示为“4GB”来欺骗我们?

2 个答案:

答案 0 :(得分:5)

不,在这两种情况下,微软都不会因为显示内存而作弊。

“32位”与“64位”仅指指针的大小。两种类型的系统都有8位字节,因此无论您使用的是32位还是64位操作,相同的内存都将是4千兆字节系统

不只是大小相同的字节。在两个系统上定义为int(在C中)的正常整数是32位。如果它是Windows(即使Linux在64位系统上使其为64位),即使是定义为long int的整数在两个系统上都是32位。因此,您可以看到应用于操作系统的“32位”或“64位”术语与除指针之外的其他事物的大小几乎没有关系。

除此之外,存储在计算机内存中的大多数数据都不是指针,甚至是可能会或可能不会改变大小的整数;它是图像的像素或字符串的字节或声音文件中的16位样本或程序中的计算机指令。根本没有改变尺寸。因此,无论您使用的是32位还是64位操作系统,通常都可以在相同数量的内存中存储相同数量的“实际信息”。

(现在,有一点当然,内存中的一些数据是指针,所以当你处理大多数指针的东西时,使用64位操作系统可能意味着你要使用更多内存相同的数据。在极少数情况下这很重要,但它们非常罕见。即便如此,它仍然是相同的内存字节数;你只需要更多它。)

答案 1 :(得分:0)

x86都使用字节寻址,因此无论何时在32位或64位OS上,4GB都是相同的

x86_64经过精心设计,因此指令大小不会增加太多或保持不变。此外,并非每种数据类型的大小都会增加。大多数操作仍使用32位变量。唯一一个大小真正加倍的类型是指针。实际上,64位程序的内存使用量并不是32位程序的两倍。通常,Windows 64位将比Windows 32位消耗大约30%的内存。

相关问题