第9章学习笔记:I/O、文件与持久化
课程笔记沿程序真实运行路径学习I/O、文件与持久化,始终区分抽象接口、实现状态和可观测证据。
关联:章节 第9章 I/O、文件与持久化
第9章笔记:I/O、文件与持久化
本章要解决的问题
沿程序真实运行路径学习I/O、文件与持久化,始终区分抽象接口、实现状态和可观测证据。 本章七课是一条连续推理链,不是七个标题。先确定上一课输出怎样成为下一课输入,再记录对象、事件、状态和证据。
七课连接
- 设备寄存器与驱动:关系
MMIO\ read/write;练习为为《设备寄存器与驱动》构造一条最短可运行轨迹,逐步记录输入状态、系统动作和输出状态,并用关系 MMIO\ read/write 复算关键量;边界为不能把《设备寄存器与驱动》在语言、ABI、ISA、微体系结构、内核或设备层的对象混成一个‘系统自动完成’,必须声明位宽、权限、时序和失败后的可见状态;连接说明:承接前一课的状态或契约;本节结果会进入《轮询、中断与DMA》。 - 轮询、中断与DMA:关系
produced=handled+buffered+dropped;练习为为《轮询、中断与DMA》构造一条最短可运行轨迹,逐步记录输入状态、系统动作和输出状态,并用关系 produced=handled+buffered+dropped 复算关键量;边界为不能把《轮询、中断与DMA》在语言、ABI、ISA、微体系结构、内核或设备层的对象混成一个‘系统自动完成’,必须声明位宽、权限、时序和失败后的可见状态;连接说明:承接前一课的状态或契约;本节结果会进入《文件描述符与打开文件》。 - 文件描述符与打开文件:关系
fd\to open\ file;练习为为《文件描述符与打开文件》构造一条最短可运行轨迹,逐步记录输入状态、系统动作和输出状态,并用关系 fd\to open\ file 复算关键量;边界为不能把《文件描述符与打开文件》在语言、ABI、ISA、微体系结构、内核或设备层的对象混成一个‘系统自动完成’,必须声明位宽、权限、时序和失败后的可见状态;连接说明:承接前一课的状态或契约;本节结果会进入《目录、inode与路径解析》。 - 目录、inode与路径解析:关系
path\to inode;练习为为《目录、inode与路径解析》构造一条最短可运行轨迹,逐步记录输入状态、系统动作和输出状态,并用关系 path\to inode 复算关键量;边界为不能把《目录、inode与路径解析》在语言、ABI、ISA、微体系结构、内核或设备层的对象混成一个‘系统自动完成’,必须声明位宽、权限、时序和失败后的可见状态;连接说明:承接前一课的状态或契约;本节结果会进入《缓冲、缓存与刷盘》。 - 缓冲、缓存与刷盘:关系
dirty\to flush\to stable;练习为为《缓冲、缓存与刷盘》构造一条最短可运行轨迹,逐步记录输入状态、系统动作和输出状态,并用关系 dirty\to flush\to stable 复算关键量;边界为不能把《缓冲、缓存与刷盘》在语言、ABI、ISA、微体系结构、内核或设备层的对象混成一个‘系统自动完成’,必须声明位宽、权限、时序和失败后的可见状态;连接说明:承接前一课的状态或契约;本节结果会进入《崩溃一致性与日志》。 - 崩溃一致性与日志:关系
WAL:log\ before\ data;练习为为《崩溃一致性与日志》构造一条最短可运行轨迹,逐步记录输入状态、系统动作和输出状态,并用关系 WAL:log\ before\ data 复算关键量;边界为不能把《崩溃一致性与日志》在语言、ABI、ISA、微体系结构、内核或设备层的对象混成一个‘系统自动完成’,必须声明位宽、权限、时序和失败后的可见状态;连接说明:承接前一课的状态或契约;本节结果会进入《文件系统恢复实验》。 - 文件系统恢复实验:关系
replay(log,disk);练习为为《文件系统恢复实验》构造一条最短可运行轨迹,逐步记录输入状态、系统动作和输出状态,并用关系 replay(log,disk) 复算关键量;边界为不能把《文件系统恢复实验》在语言、ABI、ISA、微体系结构、内核或设备层的对象混成一个‘系统自动完成’,必须声明位宽、权限、时序和失败后的可见状态;连接说明:承接前一课的状态或契约;本节结果会进入《线程与共享状态》。
章内学习法
先闭卷画一条最短执行轨迹,再为每个箭头标主体和所属层;随后逐式复算,运行本章代码实验四组测试,并增加一个越界、权限、冲突、乱序或故障输入。只要实际值与模型不同,就保存首个偏差,不用后续噪声替代根因。
错题与复习
把错误归入分层混淆、位宽/单位、状态跳步、事件顺序、权限遗漏、并发交错、故障恢复或观察窗八类。一周后更换参数重做阶段卷;能向同学从现象讲到机制、公式、实验和边界,才算学会。