为什么一个32位操作系统支持4 GB的内存?(Why does a 32-bit OS suppor

2019-06-25 18:35发布

只是读的一些笔记关于操作系统普渡大学演讲 ,并说:

程序存储器看到作为字节数组,变为从地址0到2 ^ 32-1(0到4GB-1)

为什么4 GB的?

Answer 1:

因为32位能够表示数字多达2 32 - 1 = 4294967295 = 4吉布- 1,因此寻址高达2个32个单独的字节,这将是4吉布然后。

有办法规避,虽然。 例如使用PAE甚至在32位操作系统能够支持更多的存储器。 历史上,这已经最常被使用在服务器上,虽然。 此外,非服务器的Windows SKU的不支持它。 现在所有这些都是没有实际意义,不过,考虑到64位CPU,操作系统和驱动程序支持是家常便饭。



Answer 2:

由于存储器的每个字节都必须有一个地址。 在32位操作系统,地址是32位长; 因此,有2 ^ 32个可能的地址,这意味着有2 ^ 32个字节= 4 GB。



Answer 3:

大家是说2 ^ 32 = 4GiB,这是正确的。 以防万一,这里是我们如何到达那里:

一个32位机采用32位地址访问存储器。 每个比特具有0或1的值。如果有1个比特,则有两个可能的地址:0或1,一种两比特系统(双关语预留)具有四个可能的地址:00 = 0,01 = 1,10 = 2,11 = 3。 2 ^ 2 = 4。 三个比特具有8个possble地址:000 = 0,001 = 1,010 = 2,011 = 3,100 = 4,101 = 5,110 = 6,111 = 7。

每个位翻倍的潜力地址空间,这就是为什么你有多少地址使用位给定数目的2 n次方告诉你。 2 ^ 1 = 2,2 ^ 2 = 2 * 2 = 4,2 ^ 3 = 2 * 2 * 2 = 8等

到时候你到32位的时候,你在4GiB。



Answer 4:

4 GB = 2 ^ 32个字节。



Answer 5:

2 ^ 32 = 4 * 1024 * 1024 * 1024

也就是说,以字节为单位,为4 GB的定义。 换句话说一个32位的寄存器作为存储器指针可以解决存储器和不多4 GB。



Answer 6:

如果你有一个4比特的系统中,这意味着该地址对于每个字节是4个二进制位 ,所有的概率地址范围将从0000通过11112^4 = 16 (2因为是0或1) ,利用4位就可以创建16个零和一的不同的价值观,如果你有16个不同的地址。 各代表一个byte ,那么你可以有一个最大16 bytes

4位系统看起来就像这样:

对于一个32位的系统中,您的max是2^32 = 4294967292 bytes



Answer 7:

实际上,它不是2 ^ 32 = 4294967296个字节一样简单。 你看在x86保护模式,启用了分页(即,你会得到什么,当你使用任何现代操作系统),你不直接处理的存储位置,即使传呼翻译机制是透明的,客户端应用程序。

使用4K页面时的逻辑32位存储器地址,组成:

  • 位22-31指网页目录
  • 位12-21指页表
  • 比特11-0指的是在4096字节的页偏移

正如可以看到,你有2 ^ 10(1024)页目录,在每一页目录,你有2 ^ 10的页表和每一页是2 ^ 12(4096)字节长,因此,2 ^ 32 = 4294967296个字节。 内存总线的宽度为方便一样的CPU的字长,但它没有必要是这样的。 事实上,更现代的x86 CPU支持PAE其使得即使在32位模式下的寻址超过4GB(或GIB)以上。



Answer 8:

因为是可被存储在不同的字的存储器地址(字节)的量。

但是,事实上,这并非总是如此(在大多数情况下,它是没有),操作系统可以处理比这更多的物理内存(带PAE)和应用程序可以超过4GB的虚拟内存(使用较少,因为虚拟的一部分存储器被映射到OS,1GB在Linux和2GB在Windows中,例如)。

这里是不适用的另一种情况是,如果内存是由词,而不是字节寻址,那么总的内存寻址是16GB,例如。



Answer 9:

这主要是由于32位操作系统艇员选拔只支持2 ^ 32-1地址。

如果CPU对FSB超过32条地址线,那么32位操作系统可以选择使用分页机制来访问比4GiB更多。 (例如窗户上PAE 2000高级服务器/数据中心版本支持的Intel / AMD芯片)



Answer 10:

4 GB = 2 ^ 32个字节。 但要记住由一个32位操作系统分配其最大4GB。 在现实中,OS将会看到如VRAM分配后少。



Answer 11:

正如其他用户以前所说,32位Windows操作系统使用32位字来存储内存地址。

其实,大多数32位芯片 ,这些天使用36位寻址,使用英特尔的物理地址扩展(PAE)模式。 一些操作系统直接支持这种(Linux为例)。

由于雷蒙德陈指出,在Windows 32位应用程序可以分配超过4GB的内存,而你并不需要64位Windows做到这一点 。 甚至PAE。

对于这个问题,64位芯片不支持整个64位内存空间。 我相信,他们目前只限于42位的空间...... 36位的空间,PAE使用,再加上8位地址,



Answer 12:

  1. 32 S代表数字0..4,294,967,296
  2. 32 个的 s时,可以用来解决2 ^ 32 字节 S(假设字节大小的块)
  3. 2 ^ 32 B是最大尺寸

2 ^ 32 B = 4,194,304 KIB = 4194 MIB = 4吉布



文章来源: Why does a 32-bit OS support 4 GB of RAM?