第12章学习笔记:综合系统实验:构建可验证的小内核模型
课程笔记用一套可运行模拟器贯穿调度、同步、虚存、文件与观测。
关联:章节 第12章 综合系统实验:构建可验证的小内核模型
第12章笔记:综合系统实验:构建可验证的小内核模型
本章问题
用一套可运行模拟器贯穿调度、同步、虚存、文件与观测。 本章不是七个术语的并列清单,而是一条从可观察现象到内部状态、从内部状态到工程证据的因果链。学习时始终标出对象身份、队列或表项、触发事件、权限边界和不可破坏的不变量。
七节机制连接
- 项目范围、不变量与事件模型:综合项目先定义事件、状态和不可破坏的不变量,再决定模块与输入格式;实验入口为建立进程、页框、文件和设备请求四类对象,规定任一时刻CPU最多运行一个任务、已分配页框不重复;反查边界是模拟器不是现实内核复制品,必须公开抽象掉的硬件、时序与安全假设。
- 调度器与时钟中断模块:事件循环推进到下一到达、时间片结束或I/O完成点,调度器只通过稳定接口读写就绪队列;实验入口为实现RR并记录每段运行、抢占和空闲,使用固定种子生成负载做回归;反查边界是不能每个时间单位蛮力循环冒充离散事件;同刻事件优先级需明确。
- 阻塞I/O与同步模块:任务发起I/O后离开CPU并进入设备队列,完成中断把它送回就绪;锁等待另有等待队列;实验入口为让两个任务竞争锁并交替发起磁盘请求,验证无任务同时持有同一互斥锁;反查边界是设备完成与锁释放同刻可能改变调度顺序,测试应固定并说明规则。
- 虚拟内存与页替换模块:每次内存引用先查驻留表,缺页触发替换和I/O阻塞,脏页增加写回事件;实验入口为把LRU接入事件循环,记录每进程缺页数、牺牲页和由缺页增加的墙钟时间;反查边界是只统计缺页次数不足以比较策略;写回成本和局部性也会改变总时间。
- 文件与崩溃恢复模块:最小文件层维护目录项、inode、数据块与日志事务,崩溃后只重放已提交记录;实验入口为执行create、write、rename并在每个持久化点注入崩溃,验证旧或新版本二选一;反查边界是模型若没有写序与提交点,就不能声称实现了崩溃一致性。
- 端到端测试、观测与反查:每个项目结论必须能由输入负载、事件日志、断言和汇总指标复现;实验入口为准备正常、边界、竞态、资源耗尽和崩溃五套场景,输出甘特图、缺页、I/O和不变量检查;反查边界是只保存最终输出会丢失首个偏差;事件日志也要限制体积并避免泄露敏感输入。
- 答辩:从现象解释到机制证据:合格答辩现场运行未知测试,定位一个故障并说明模型与真实内核的差距;实验入口为从空环境启动模拟器,运行回归,故意破坏一个锁释放,再用首个不变量失败定位;反查边界是代码行数、界面美观和术语数量都不能替代可运行、可解释与可恢复证据。
请给七节画依赖箭头:前一节留下的状态或接口怎样成为下一节输入?每条箭头补单位、事件或保护条件。若任何一节可以随意搬走且不影响上下文,说明你还没有建立章内联系。
章内实验
选择本章至少一个代码实验,从空环境运行全部内联测试,再新增一个资源耗尽、非法迁移、同刻事件或崩溃输入。保存输入、输出、参考模型、首个偏差和修复后的回归证据。不可复现的睡眠竞态或人工截图不算实验结果。
错题闭环
把错误编码为对象混淆、状态跳步、单位错误、队列顺序、竞态遗漏、权限越界或恢复假设。不要只写粗心。一周后更换数字和事件顺序重做阶段卷;能在新输入下重建机制而非记住答案,才算迁移成功。