学习路径
摘要
目录树只能告诉你「有哪些课」,回答不了「我想搞懂数据库内核,该按什么顺序读」。
学习路径
目录树只能告诉你「有哪些课」,回答不了「我想搞懂数据库内核,该按什么顺序读」。
这里把全站笔记按目标重新组织:选一个你想到达的地方,下面会给出一条跨课程的路线 —— 每一步为什么排在这个位置、该读哪几篇、以及怎么自测有没有真的过关。
GOAL-BASED READING
选择学习目标
本路径以 xv6 为载体,从汇编基础出发,层层深入到内核的各个子系统,最终打通操作系统、数据库与存储系统的底层逻辑。路径核心在于建立「系统调用 -> 内核态 -> 硬件中断/异常 -> 虚拟内存/文件系统」的完整视图。
- 阶段
- 8
- 预计时间
- 16 周
前置基础具备基本的 C 语言编程能力,了解二进制与汇编的基本概念(如寄存器、栈、函数调用约定)。
为什么是这一步阅读 xv6 代码前,必须理解 C 语言在 x86-64/RISC-V 机器上的具体实现细节。如果不理解函数栈帧、参数传递、返回值处理以及编译器如何优化,看代码会像看天书。
过关标志能手动推演一个 C 函数调用(包括参数入栈、栈帧增长、返回值通过寄存器或栈传递)在内存中的布局。
为什么是这一步这是操作系统对用户程序唯一的可见接口。理解它能让读者明白「用户态如何进入内核态」、「中断向量表(IDT)」、「系统调用表」以及「系统调用号」的作用。
过关标志能解释 `int $0x80` 或 `ecall` 指令触发后,CPU 如何切换到内核态并跳转到对应的系统调用处理程序。
为什么是这一步理解进程的抽象、进程切换(`swtch`)的汇编实现以及调度算法。这是理解多任务系统的入口。
过关标志能手写或画出 `swtch` 函数的汇编代码逻辑,并解释为什么切换上下文时必须关闭中断。
为什么是这一步虚拟内存是现代操作系统的核心魔法。必须理解线性地址到物理地址的翻译过程、TLB 缓存、缺页异常以及写时复制。
过关标志能画出页表结构(四级页表 Sv39 或两级页表),并解释当访问一个无效页时,内核的缺页异常处理流程。
为什么是这一步理解文件系统如何将逻辑上的「文件」映射到物理磁盘块。重点关注磁盘调度、inode 结构以及缓冲区缓存策略。
过关标志能解释 `write` 系统调用在内核中是如何将数据从用户缓冲区刷写到磁盘的(包括 `bio.c` 的流程)。
为什么是这一步理解操作系统如何保证在断电后数据不丢失。日志结构文件系统是现代数据库和操作系统文件系统的通用范式。
过关标志能解释 `fsync` 系统调用中,日志记录是先写磁盘还是先写内存,以及崩溃恢复时如何利用日志重放事务。
为什么是这一步将操作系统中的文件系统与数据库系统(如 PostgreSQL)中的 WAL(预写日志)和 MVCC(多版本并发控制)进行对比。这是 MIT Notes 系列笔记最独特的价值:打通底层原理。
过关标志能对比说明 PostgreSQL 的 WAL 日志记录格式与 xv6 文件系统日志记录的异同,以及 MVCC 的快照机制是如何在 OS 虚拟内存的基础上实现的。
为什么是这一步理论必须通过代码实践来内化。通过修改 xv6 来实现具体功能(如新的系统调用或简单的文件系统扩展),是检验学习成果的最终标准。
过关标志成功修改 xv6 内核,新增一个系统调用(例如 `introduce()`, 返回当前进程 ID),并在用户程序中调用成功。
关于这些路径
路线是基于全站笔记的实际内容生成的,每个链接都经过校验,确保指向真实存在的笔记。如果某一步你已经掌握,直接跳过即可 —— 顺序是建议,不是规定。