首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >32位系统上4 4GB限制背后的数学运算

32位系统上4 4GB限制背后的数学运算
EN

Stack Overflow用户
提问于 2013-05-31 12:21:06
回答 2查看 15.7K关注 0票数 11

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

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

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

首先,这个(1,024 * 1,024)从何而来?

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

第三,即使RAM中最小的可寻址空间是一个字节,但硬盘驱动器肯定不是这种情况,因为32位系统的硬盘容量通常超过4 GB。有人能简要描述一下硬盘的寻址方案吗?

EN

回答 2

Stack Overflow用户

回答已采纳

发布于 2013-05-31 12:46:58

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

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

1-什么是千字节、兆字节、千兆字节?

对于随机存取存储器的

  • ,人们同意,千兆字节是1024兆字节,每个由1024千字节组成,每个字节是1024字节。这源于这样一个事实,1024是2^10,但又足够接近1000,历史上允许使用

  • 作为存储的Kilo前缀,供应商早在几年前就开始严格使用十进制单位,1 is等于1000000字节(因为它使容量在精美的小册子中看起来更大)

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

2-可寻址单元

  • 对于大容量存储器,可寻址单元是扇区或块,最常见的是512字节,但4096字节的速度很快。

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

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

它对存储的麻烦要小得多:

  • 在我所知道的所有基于PC的现代情况下,可寻址单元只是简单地用32位或48位来计数(逻辑块寻址)。即使在它最基本的版本中,这也足以满足每个磁盘2 TiB的存储(每个512字节的2^32个块)。使用48位LBA和每个数据块4 KiB的极速版本导致每个磁盘大约有1个Gazillion TiB。
票数 13
EN

Stack Overflow用户

发布于 2013-05-31 12:36:52

一台计算机并不是所有的内存。32位是要组织的指令集的最大点数。64位为您提供更多的位来引用更多的内存。我认为这些人指的是4,294,967,296位组合,而不是字节(8位)。

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

票数 -1
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/16849702

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档