第7章 综合案例与诊断¶
前六章分别学习了特权转换、调度、同步、虚拟内存、文件系统、设备和保护。本章不再引入大量新抽象,而是把它们放回一条真实控制流,并训练“提出假设—取得证据—排除替代解释”的诊断方法。
小结目录¶
- 一次
read系统调用的完整旅程:从用户缓冲区和文件描述符出发,经过 VFS、inode、页缓存、块层、驱动、DMA 和中断,再返回用户态。 - 诊断工具、实验方法与自测:按 CPU、调度、内存、文件、I/O 和系统调用层次组织观测工具,并提供综合自测题与参考思路。
为什么必须做综合路径¶
单独记住“read 是系统调用”远远不够。一次读取可能立即命中页缓存,也可能让线程睡眠;用户缓冲区可能触发缺页;设备可能通过 DMA 写入内存;返回前还要检查短读、信号和错误码。只有把条件分支画出来,才能解释性能和正确性现象。
诊断的基本循环¶
学完应能做到¶
- 解释缓存命中和缓存未命中时
read路径的分叉。 - 区分进程正在运行、可运行但未获 CPU、睡眠等待事件三种状态。
- 为高 CPU、频繁切换、主要缺页、高 I/O 延迟分别选择第一批观测指标。
- 识别工具输出的限制,不把相关性直接当因果关系。
- 用前面章节的机制和权衡回答综合题,而不是只复述定义。