外观
如何使用这套手册
这套资料面向已经会写一些程序、希望理解程序如何运行的学习者。主线从 CSAPP 的机器级执行,延伸到 xv6 内核、多个节点之间的协调、多核与 GPU,最后进入语言模型的训练和生成。无需按大学完整培养方案补齐所有课程;缺少的知识在对应章节按需学习。
每次学习做四件事
- 用一句话说出机制解决的问题。 例如 COW 解决 fork 后大量页面可能从未被写入却被提前复制的问题。
- 画一条执行路径。 从用户调用、异常进入、内核状态变化,一直画到返回;标出状态归谁所有。
- 运行或修改一个例子。 先预测输出,再运行。预期与实际不同的地方最值得记录。
- 寻找不能破坏的条件。 例如物理页引用计数不能在仍有映射时归零,未获多数派确认的写不能宣称已提交。
讲义中的折叠答案用于自测;先写下自己的回答再展开。涉及代码的章节既有原理,也有参数、边界条件和失败场景。源码页与代码下载包都由仓库内的同一份 labs/ 自动生成,方便边读边运行。
三种代码的边界
| 类型 | 用途 | 可以证明什么 |
|---|---|---|
| 官方课程骨架 | 按固定年份完成原始任务 | 配合该版本官方测试验证实验要求 |
| 本仓库原创教学实现 | 缩小状态空间,观察机制 | 验证这里明确列出的不变量与例子 |
| 讲义中的伪代码 | 表达算法和顺序关系 | 帮助设计,不能直接当作可运行实现 |
例如 Python COW 模型没有真实页表硬件、TLB 和多核竞争;模型测试通过意味着模型中的引用计数和隔离逻辑符合断言,不意味着 xv6 已通过 make grade。语言模型的微型训练也不能代表真实大模型效果。每个实验都说明自己的边界。
推荐入口
阅读页面适合手机和平板;编译、调试和实验更适合电脑。网站公开阅读,无需创建账号。