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

问题描述 投票:-2回答:2

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

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

[我们可以看到在32位的情况下,我们在系统中有4GB的物理内存,然后将这4GB除以32位Integer的大小,我们可以存储一些整数(称为N ) 在记忆中。而且,在64位中,计算结果是4GB除以64位整数的大小,因此我们只能存储一半的整数。结果,对于64位,我们不能在相同的内存中存储那么多整数。

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

windows x86 32bit-64bit cpu-architecture memory-limit
2个回答
5
投票

不,Microsoft不会通过在两种情况下都显示相同的内存来作弊。

“ 32位”与“ 64位”仅指pointers的大小。两种类型的系统都具有8位bytes,因此无论您使用的是32位还是64位操作系统,相同的内存将为4 giga bytes

不仅仅是大小相同的字节。在两个系统上,定义为int(在C中)的普通整数是32位。如果是Windows,即使在两个系统上,即使定义为long int的整数也为32位(尽管Linux在64位系统上为64位)。因此,您可以看到,应用于OS的“ 32位”或“ 64位”术语与指针以外的东西的大小几乎没有关系。

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

(现在,有一点是,内存中的某些数据当然是指针,因此,当您处理的大部分都是指针时,使用64位操作系统可能意味着您将更多的内存用于同一指针。数据。在非常罕见的情况下,这很重要,但它们却非常罕见。即使如此,它仍然是相同数量的内存字节;您只需要更多即可。)


0
投票

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

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

© www.soinside.com 2019 - 2024. All rights reserved.