第6章学习笔记:内存管理与虚拟内存
课程笔记把地址翻译、分配、替换和抖动连成可计算的访问链。
关联:章节 第6章 内存管理与虚拟内存
第6章笔记:内存管理与虚拟内存
本章问题
把地址翻译、分配、替换和抖动连成可计算的访问链。 本章不是七个术语的并列清单,而是一条从可观察现象到内部状态、从内部状态到工程证据的因果链。学习时始终标出对象身份、队列或表项、触发事件、权限边界和不可破坏的不变量。
七节机制连接
- 地址空间与重定位:链接地址、逻辑地址和物理地址由装载与MMU映射连接,保护检查必须先于物理访问;实验入口为给基址、界限和逻辑地址计算物理地址,对越界地址返回保护异常;反查边界是地址位数只说明表示范围,不说明所有地址都已映射或可访问。
- 连续分配、碎片与伙伴系统:首次/最佳/最坏适配影响外部碎片,伙伴系统用二次幂块换取快速合并;实验入口为按请求序列在128KiB区域执行分配释放,画空闲链并计算内部与外部碎片;反查边界是空闲总量足够不代表存在足够大的连续块;碎片率必须说明定义。
- 分页、页表与TLB:虚拟页号索引页表得到页框,页内偏移保持不变;TLB缓存近期翻译而非数据;实验入口为对32位地址、4KiB页拆VPN与offset,分别计算TLB命中、页表命中和缺页路径;反查边界是TLB未命中不等于缺页;页表项还含有效、权限、访问和修改等状态。
- 多级页表与反向页表:多级页表只为用到的地址范围分配下级表,反向页表按物理页框记录拥有者;实验入口为给48位虚拟地址与四级索引位数计算最坏页表访问次数和覆盖范围;反查边界是巨大页减少TLB压力却增加内部碎片与迁移成本,不能全局默认开启。
- 请求分页、工作集与抖动:缺页处理要定位页、选择页框、必要时写回、读入并重启指令;工作集近似近期活跃页面;实验入口为逐页追踪两个进程的驻留集和缺页率,识别总工作集超过物理页框后的抖动;反查边界是高CPU利用率不是加进程的充分理由;抖动时增加并发度会进一步恶化。
- 实验:FIFO与Belady异常:页替换模拟器维护页框集合与进入顺序,缺页才替换最早进入页面;实验入口为输入引用串与页框数,输出FIFO缺页次数,并比较3框与4框是否出现Belady异常;反查边界是首次装入也计缺页;增加页框对FIFO不保证单调,但栈算法LRU具有包含性质。
- 实验:LRU与CLOCK替换:LRU记录最近访问次序,CLOCK用访问位近似并循环寻找牺牲页;实验入口为同一引用串分别输出LRU与CLOCK缺页数,附至少四组边界测试;反查边界是CLOCK结果受指针初始位置和访问位置更新规则影响,题面必须明确定义。
请给七节画依赖箭头:前一节留下的状态或接口怎样成为下一节输入?每条箭头补单位、事件或保护条件。若任何一节可以随意搬走且不影响上下文,说明你还没有建立章内联系。
章内实验
选择本章至少一个代码实验,从空环境运行全部内联测试,再新增一个资源耗尽、非法迁移、同刻事件或崩溃输入。保存输入、输出、参考模型、首个偏差和修复后的回归证据。不可复现的睡眠竞态或人工截图不算实验结果。
错题闭环
把错误编码为对象混淆、状态跳步、单位错误、队列顺序、竞态遗漏、权限越界或恢复假设。不要只写粗心。一周后更换数字和事件顺序重做阶段卷;能在新输入下重建机制而非记住答案,才算迁移成功。