← 完整学习路线

UNIT 38 / 78 · W05-2

虚拟地址算式与真实映射的不同证据

本单元预计 4 核心小时。可以分成多个学习时段,按完整小节推进;停下来时留下输入、命令、结果和下一步。

时间包含阅读、编码与检查,是学习预算而非期限。打开此页只保存阅读位置,不代表通过验收。

01 / READ

先知道自己在观察什么

虚拟内存、页表与 mmap →

先手算地址4099的页号与偏移,再读 mmap、MAP_FAILED 和本机页大小查询。

先备不清楚时,沿章节入口补读;不要依赖翻过页数判断进度。

02 / PREDICT & RUN

先留下自己的预测或独立尝试

运行前说明两个相邻页边界的写入位置,运行后只记录 boundary=7,9,不推断物理地址连续。

在两页交界处读写匿名映射 →
源码下载与编译入口

下载到自己的练习目录。按本节给出的完整命令编译;多文件与driver要求见原任务。需要时查阅文件保存与编译操作 →

20-b.cpp

先保存预测,再核对正文标明的预期或诊断。完整构建、多文件与设备实验按原任务命令执行。

03 / CHANGE ONE THING

通过一个变动看清原因

在副本将两页交界处写入改为11与13,同步把first/second的对应期望从7/9改为11/13;保持查询页大小、错误检查和解除完整映射。

修改后应观察到什么

读回边界两值为 11、13;映射解除后没有继续访问。

04 / DO IT YOURSELF

换一组条件,独立解决

独立写纯 CPU 地址翻译函数,教学页大小1024、页表[9,4],测试1023、1024、2048。

用这些条件检查自己的实现

  • 前两个结果为10239与4096;2048页号越界被拒绝。
  • 另查 offset=96、size=8、length=100,必须拒绝;检查不能先做可能溢出的加法。
05 / EXPLAIN & CHECK

用证据决定是否进入下一单元

  1. TLB miss 为什么不等于磁盘读取?
  2. 页可写为什么仍不能证明 C++ 对象访问合法?

本单元的验收依据

纸上算式、模型边界与实际匿名映射记录分开保存;没有把模型物理地址当本机测量。

留下自己的代码或推演、测试输入、真实输出和仍不确定的问题。未达到要求时,下一次继续本单元。