为什么 32 位操作系统有 4 GB RAM 的限制?

Why the Operative System of 32 bits has the limitation of 4 GB of RAM?

为什么32位操作系统有4GB RAM的限制?。我知道处理器有一个寄存器,PC(程序计数器),指令的地址所在,如果这个寄存器是 32 位的,它是一个硬件限制,因为寄存器的大小。但是为什么32位的操作系统会有这个限制呢?它的内核中规定最大 ram avalaible 可以是 2 指数 32 位?

谢谢

限制是因为在 32 位体系结构中,您使用 32 位地址引用内存中的地址。所以这意味着在 32 位架构中你只能引用 2^32 个地址。接下来我们需要考虑到每个地址都意味着我们正在引用一个 8 位的字节。这意味着实际上我们可以引用 2^32 * 8 位

现在让我们来看看答案的数学部分。如果您可以引用 2^32 * 8 位,那么您可以引用 2^35 位和 2^35 = 34359738368 位 = 4294967296 字节 = 4194304 千字节 = 4096 兆字节

这就是为什么在 32 位计算机中只能引用 4GiB 内存的原因。

Why the Operative System of 32 bits has the limitation of 4 GB of RAM?

可能不会。

“32 位”通常是指通用寄存器的大小,可能与任何地址的大小无关。例如,对于现代 64 位操作系统,地址通常只有 48 位。

还有;大多数操作系统使用某种形式的分页,其中虚拟地址大小可能与物理地址大小无关。例如;对于使用 PAE(物理地址扩展)的 32 位 80x86;虚拟地址限制为 32 位(导致每个进程限制为 4 GiB 的“虚拟 space”,减去内核为自身保留的任何内容);但物理地址 are/were 36 位(给出“最多 64 GiB RAM,减去 space 用于设备、ROM 等”的限制)。

即使物理地址大小为 32 位,也存在其他硬件限制 - 例如其中一些位可能会被用于其他目的的硬件 and/or 忽略(例如,一位用作“是否加密 RAM”标志),and/or RAM 控制器不支持;并且某些物理地址 space 必须由非 RAM(ROM、设备等)的事物使用;所以“32 位物理地址”极不可能意味着“最大 4 GiB 的 RAM”。

终于;硬件有可能支持存储体切换,其中 RAM 被分成多个存储体,一些存储体映射到物理地址 space,而另一些则不是;并且“选择了哪个 bank/s” 由 OS 使用特殊硬件控制。这对于 8 位和 16 位 CPU 来说非常普遍(例如,在 1980 年代初期插入 PC 的 ISA 插槽的“扩展内存”卡);但随着物理地址大小的增加,变得越来越不常见。