如果帧是 4KB,那么具有 4 字节条目的系统可以寻址 2^36 字节的物理内存。 2^36 怎么样?

If a frame is 4KB then a system with 4 byte entries can address 2^36 bytes of physical memory. How is it 2^36?

我在 Galvin 的 "Operating System Concepts" 中看到了这条线。提到如下,

"Each page table entry is usually 4 bytes long, but that size can vary as well. A 32 bit entry can point to one of the 2^32 physical page frames. If a frame is 4KB then a system with 4 byte entries can address 2^36 bytes of physical memory."

我不明白 2^36 是怎么来的。如果有人能解释一下。

PS:这是我的第一个 Whosebug 问题。所以如果我的问题不符合标准,我很抱歉。

这里的上下文不是 100%,但我认为提供解释就足够了。

页面table结构包含进程虚拟内存和计算机物理内存之间的映射。基本单位是页,大小为4KB,可以12位字节级寻址。

现在,如果可以在字节级别映射的整个地址space是2^36位,而我们正在映射页面,则意味着最后12位被页面占, 留下前 24 位通过页面 table 提供。这将映射到具有大约 1600 万个条目的页面 table。如果每个条目都是 4 字节,我们会看到在使用高峰时消耗了 64 MB 的内存。这似乎是一个合理的数量。

每个条目有 4 byte/32 位,它可以识别 2^32 个不同的页面之一。而且我认为页面 table 中只有 2^24 个条目这一事实是隐含的,您只能填写完整物理 space.

的一部分

看来你引用的有点不对。书中说: "A 32-bit entry can point to one of 2^32 physical page frames. If frame size is 4 KB (2^12), then a system with 4-byte entries can address 2^44 bytes (or 16 TB) of physical memory"

在这种表示中 - 2^44 是合乎逻辑的。 我们有 2^32 个帧,在 x32 系统上,每个帧可以容纳 2^12 个条目(4 KB 帧大小。条目是 4 个字节 - x32 系统上的指针大小)。所以有了:2^32 * 2^14 = 2^44 - 帧可以容纳的字节总数。