跳到正文

多级页表与反向页表

55 分钟

多级页表与反向页表

先看见系统现象

这一节我们不从定义表开始,而从你能亲手观察的现象进入“内存管理与虚拟内存”。请先把场景放到桌面上:给48位虚拟地址与四级索引位数计算最坏页表访问次数和覆盖范围。终端里出现的返回值、延迟或状态变化并不是答案,它只是证据入口。你要继续追问:哪一层拥有这个状态?谁有权修改?一次正常动作会经过哪些队列、表项、保护边界和硬件事件?如果中途失败,系统还必须守住什么?
(本段反查对象:多级页表与反向页表;章内位置:6-4。)

本节真正要教会你的机制是:多级页表只为用到的地址范围分配下级表,反向页表按物理页框记录拥有者。先用自己的话向同学解释,再把名词落到一个具体对象和一条时间线。若只能说“内核会处理”“系统自动调度”,说明责任边界仍然模糊;下一步应把自动二字拆成状态、事件、条件和可观察结果。
(本段反查对象:多级页表与反向页表;章内位置:6-4。)

建立对象、状态与不变量

请在纸上画四栏:对象身份、可见状态、允许事件、不变量。围绕“多级页表与反向页表”,对象身份回答我们正在追踪的是进程、线程、页、文件、设备请求还是保护域;可见状态列出实验可以读到的队列、计数器、返回码和时间戳;允许事件说明谁能触发迁移;不变量写出任何合法执行都不能破坏的条件。
(本段反查对象:多级页表与反向页表;章内位置:6-4。)

把核心机制落实为状态迁移时,用 旧状态 --事件/条件--> 新状态 书写。每条边都补触发者、原子范围和失败返回。多级页表只为用到的地址范围分配下级表,反向页表按物理页框记录拥有者。这句话不是要背,而是约束你的图:图中若存在没有触发事件的跳转、两个对象同时占有唯一资源、无权限主体修改受保护状态,图就已经暴露了错误。
(本段反查对象:多级页表与反向页表;章内位置:6-4。)

跟我沿时间线推一遍

现在按“观察—假设—执行—记录—反查”完成贯穿实验:给48位虚拟地址与四级索引位数计算最坏页表访问次数和覆盖范围。第一步固定输入和初始状态;第二步只改变一个因素;第三步记录每个离散事件后的状态,而不是只看最后一行;第四步用不变量检查首个偏差;第五步更换一个边界输入重跑。这样得到的不是演示截图,而是一条可重复证据链。
(本段反查对象:多级页表与反向页表;章内位置:6-4。)

假设当前有 3 个请求,每个请求有效服务时间为 2 ms,边界切换或固定管理开销为 3 ms。最小串行预算是 3×(2+3)=15 ms。这个算式只在没有排队重叠、缓存变化和并行执行时成立;现实测量若不同,不要先判程序错,而要逐项检查模型遗漏。公式的价值是暴露假设,不是替系统替你做判断。
(本段反查对象:多级页表与反向页表;章内位置:6-4。)

可运行实验怎样设计

本课程把实验当成可执行论证。输入必须自描述,输出必须稳定,正常、边界、失败和回归至少四组测试。实验程序从标准输入读取、写到标准输出,不依赖本机残留文件、时钟运气或人工点击。与“多级页表与反向页表”相关的每个变量都标单位;同刻事件的先后、队列稳定性、舍入和错误码也要在题面声明。
(本段反查对象:多级页表与反向页表;章内位置:6-4。)

先写参考模型再写优化实现。参考模型宁可慢,也要让每一步状态可打印;优化版本必须在同一组测试上与参考模型逐项一致。遇到并发或弱内存难以真实复现时,可以先做确定性的离散事件模拟,但必须明确它抽象掉了什么,不能把伪代码标成可运行代码题。

边界、竞态与失败注入

本节最危险的误解是:巨大页减少TLB压力却增加内部碎片与迁移成本,不能全局默认开启。请把这句话改写成至少一个反例输入,并说明错误实现会输出什么、正确实现应拒绝或怎样恢复。再主动注入空输入、零容量、同刻事件、权限不足、重复请求、资源耗尽和中途崩溃中的两个,让系统暴露首个不变量失败。
(本段反查对象:多级页表与反向页表;章内位置:6-4。)

竞态题不靠“可能有问题”得分。你要列出两个执行者各自的步骤,保持各自程序序,再构造一个具体交错;标出第一次读取旧值、重复占有、丢失唤醒或越权使用发生在哪里。若加一把大锁可以修复,还要继续问锁的范围、等待、失败路径和是否造成死锁。

从机制连接到前后章节

“多级页表与反向页表”不是孤立知识点。向前,它依赖程序、硬件中断、地址与数据结构等基础;向后,它会影响调度延迟、内存驻留、文件持久化、设备吞吐、安全隔离或虚拟化开销。请画一条因果链:上游事件改变本节状态,本节决策改变下游可观察结果。链条上每条箭头都写量纲或状态条件。
(本段反查对象:多级页表与反向页表;章内位置:6-4。)

当你发现同一现象有多种解释时,列假设表,不要抢着下结论。比如延迟升高可能来自运行队列、锁等待、缺页、块设备排队或虚拟机steal;下一项观测应能让至少两个假设产生不同预测。系统课真正训练的是这种跨层、可证伪的推理。

在线练习与纸笔推演

本节下方至少有单选、多选和计算题;部分课时另有真实代码实验。单选先圈主体与条件,再寻找唯一能完整解释机制的选项。多选逐项给反例,漏选和多选都视为边界没掌握。计算题先写单位和中间状态,再代入;代码题必须通过全部内联测试,并自己补一组题库未覆盖的失败测试。
(本段反查对象:多级页表与反向页表;章内位置:6-4。)

做完不要立刻看解析。把答案遮住,用“对象—状态—事件—不变量—证据”五句话复述。如果你能从“给48位虚拟地址与四级索引位数计算最坏页表访问次数和覆盖范围”重建机制,也能解释“巨大页减少TLB压力却增加内部碎片与迁移成本,不能全局默认开启”为什么成立或不成立,才算完成了从现象到原理的闭环。
(本段反查对象:多级页表与反向页表;章内位置:6-4。)

下课前严格自检

闭卷回答六问:一,“多级页表与反向页表”管理的具体对象是什么?二,写出至少三条合法状态迁移;三,复述核心机制“多级页表只为用到的地址范围分配下级表,反向页表按物理页框记录拥有者”;四,给“给48位虚拟地址与四级索引位数计算最坏页表访问次数和覆盖范围”写四组可运行测试;五,构造一个对应边界“巨大页减少TLB压力却增加内部碎片与迁移成本,不能全局默认开启”的反例;六,把本节机制连接到前一章和后一章各一个概念。
(本段反查对象:多级页表与反向页表;章内位置:6-4。)

合格不是能认出术语,而是能画状态图、算出中间量、运行实验、定位首个错误并说明模型边界。若任一问只能用“系统自动完成”回答,就回到时间线补出真正执行动作,再进入下一节。

Practice

本课练习

4

先独立作答再提交;编程题会在隔离沙箱中真实编译、运行并对拍。

1单选验收:多级页表与反向页表 3

围绕实验“给48位虚拟地址与四级索引位数计算最坏页表访问次数和覆盖范围”,哪一步最符合操作系统机制分析?

登录 后答题可以领积分
2多选验收:多级页表与反向页表 3

本题验收多级页表与反向页表的机制证据。哪些材料不可缺少?(漏选或多选均不得分。)

多选题:必须选全正确项,漏选或多选均不得分。

登录 后答题可以领积分
3计算验收:多级页表与反向页表 3

请用多级页表与反向页表中的简化串行预算检查下列负载:有6个请求,每个有效服务2ms,每次固定管理开销3ms,忽略并行与重叠。总墙钟预算是多少ms?填写数值,并在草稿写公式和适用条件。

登录 后答题可以领积分
4U06独立题06:多级页表与反向页表 4

阶段卷要求验收多级页表与反向页表。选择所有能支持结论、并允许同伴复查的材料。

多选题:必须选全正确项,漏选或多选均不得分。

登录 后答题可以领积分