数学在32位系统上限制为4GB

时间:2013-05-31 04:21:06

标签: binary 32bit-64bit

我有一个与32位内存地址有关的非常基本的问题。我的理解是2 ^ 32是32位系统上可能的内存地址的最大数量。令我感到困惑的是我们如何从这个数字转到所谓的4GB限制。在我的研究中,我看到some people这样做:

2 ^ 32 = 4,294,967,296字节

4,294,967,296 /(1,024 * 1,024)= ~4 GB

首先,这(1,024 * 1,024)来自哪里?

其次,如果我错了,请纠正我,但是4,294,967,296被标记为字节,因为一个字节是可以在RAM中寻址的最小存储空间单位。由于我们仅限于2 ^ 32个地址,因此这是可以寻址的字节数。

第三,即使RAM中最小的可寻址空间是一个字节,硬盘也不一定如此,因为32位系统通常硬盘的容量超过4 GB。有人可以简要描述硬盘的寻址方案吗?

2 个答案:

答案 0 :(得分:11)

这是基本算术的情况:每个寻址单位的字节数乘以可寻址单位数等于可寻址字节数。

困难的部分是,从哪里获取这些数字。以下是我的看法:

1 - 什么是Kilobyte,Megabyte,Gigabyte?

  • 对于RAM,有一个同意,技嘉是1024兆字节,每个由1024千字节组成,每个字节为1024字节。这源于这样一个事实:1024是2 ^ 10,但足够接近1000以至于历史上允许Kilo前缀
  • 对于存储,供应商多年前开始使用严格的十进制单位,兆字节为1000000字节(因为它使光泽小册子的容量看起来更大)

这导致1024 * 1024字节称为MiB,1000 * 1000字节称为MB

2 - 可寻址单元

  • 对于RAM,可寻址单位是字节,即使它是从物理RAM中取出的至少为4的块。
  • 对于大容量存储,可寻址单元是扇区或块,最常见的是512字节,但快速捕获4096字节。

3 - 可寻址单元的数量要复杂得多,让我们从RAM开始:

  • 32位CPU( sans MMU!)可以解决2 ^ 32字节或4 GiB
  • 所有现代32位CPU都包含一个MMU,它将这4 GiB的虚拟地址空间映射到物理地址空间
  • 此物理地址空间可以具有与4 GiB不同的大小,作为MMU的函数使用比32个物理地址线更多(或在史前时间更少)。今天最常见的实现是36个或更多物理位,导致16 * 4 GiB或更多(PAE或物理地址扩展)
  • 这个MMU魔术围绕在32位模式下运行的CPU,即对于每个进程,地址空间不能大于4 GiB
  • 为了让事情更有趣,这个地址空间的一部分用于我所知道的每个现代操作系统中的内核功能。对于所有主流操作系统,这会为每个进程产生2 GiB或3 GiB最大可用地址空间。
  • 因为这仍然太简单了:操作系统必须支持在一个模式下运行MMU,实际上它可以使用超过4 GiB的物理RAM。一个值得注意的例子是Windows XP 32 Bit,它不允许这样做。
  • 最后但并非最不重要:物理地址空间的一部分最常用于内存映射硬件。如果这与上述操作系统限制相结合,则会导致Windows XP 32位有时只能使用2.5到3.5 GiB的物理RAM

存储的麻烦更少:

  • 在我所知道的所有基于PC的现代案例中,可寻址单元只需32或48位(LBA或逻辑块寻址)。即使在最基本的版本中,这对于2个存储空间每个磁盘(每个512字节的2 ^ 32个块)也足够了。每个块具有48位LBA和4 KiB的最大版本导致ca.每盘大量的TiB。

答案 1 :(得分:-1)

计算机不是所有内存。 32位是指令组的最大位置。 64位为您提供更多位来引用更多内存。我认为那些人意味着4,294,967,296位组合而不是字节(8位)。

至于数学 - 它似乎意味着除了指定可能的存储器地址之外,还为其他用途保留了20位。

相关问题