首页 > 解决方案 > Tanenbaum 现代操作系统的页表大小练习

问题描述

我决定通过解决 A. Tanenbaum 的“现代操作系统”中的问题来测试我对操作系统内部的了解。并且遇到了以下问题:

假设一台机器有 48 位虚拟地址和 32 位物理地址。如果页是 4 KB,如果页表只有一个级别,那么页表中有多少条目?

一如既往,因为我们有 48 位虚拟地址空间,我们需要能够将每个内存地址映射到物理地址。所以我们有 2^48 个地址,每页是 4KB=2^12,所以我们需要一个页表中有 2^36=2^(48-12) 个条目。因此,当我们获得 48 位地址时,我们使用高 36 位作为页表的索引来查找页框的数量,然后使用低 12 位作为页框中的偏移量。

然后我在解决方案手册中查找了正确答案:

我们需要为每一页输入一个条目,或者 2^24 = 16 × 1024 × 1024 个条目,因为页码字段中有 36 = 48 - 12 位。

我无法理解正确答案背后的原因,它确实正确还是我遗漏了什么?

标签: architectureoperating-systemvirtual-memory

解决方案


你是绝对正确的。如果您有 48 位虚拟地址和 4KB 页面,则至少需要 12 位才能在页面中选择正确的字节。所以你的页表中有 2^48-2^12 = 2^36 个条目来将虚拟地址转换为物理地址。(其中一些会在您的磁盘上)。


推荐阅读