architecture - 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 位。
我无法理解正确答案背后的原因,它确实正确还是我遗漏了什么?
解决方案
你是绝对正确的。如果您有 48 位虚拟地址和 4KB 页面,则至少需要 12 位才能在页面中选择正确的字节。所以你的页表中有 2^48-2^12 = 2^36 个条目来将虚拟地址转换为物理地址。(其中一些会在您的磁盘上)。
推荐阅读
- javascript - 有什么方法可以将 blob url 转换为文件。?
- python - Pandas:将输出值从具有 NaN 值的列中的浮点数更改为整数
- angular - 可扩展行内具有嵌套材料表的材料表
- javascript - Discord.js Slash 命令名称无效
- pandas - 为什么即使 iterator = False,Pandas read_CSV 也会返回 TextFileReader?
- java - 在 Vaadin 框架中,如何让客户端时区用于渲染显示的第一页
- javascript - Vue.js Javascript 框架和打印而不打印对话框
- jsf - 我不知道如何将 html 页面转换为 xhtml(jsf) ,当我运行该页面时,我没有为名称定义标签:输入
- docker - Ubuntu 20.04 上的安全 Tileserver-GL
- solr - 如果我们有很多 indexed=true 和 stored=false 的字段,solr 集合大小会增加吗