闭卷重建一条命令背后发生了什么的对象、状态、事件、不变量与一个失败反例。
操作系统与系统实验 · 小纸条
选一章打印。双面打印(按长边翻页)后沿虚线剪开,每张卡片正面题目、背面答案。
闭卷重建用户态、内核态与受控入口的对象、状态、事件、不变量与一个失败反例。
闭卷重建系统调用ABI与参数复制的对象、状态、事件、不变量与一个失败反例。
闭卷重建中断、异常与陷阱的对象、状态、事件、不变量与一个失败反例。
闭卷重建内核结构与模块边界的对象、状态、事件、不变量与一个失败反例。
闭卷重建实验:统计系统调用与边界穿越的对象、状态、事件、不变量与一个失败反例。
闭卷重建实验:最小系统调用分派器的对象、状态、事件、不变量与一个失败反例。
核心机制:处理器特权级限制敏感指令,系统调用、异常和中断通过硬件规定的入口切换控制权;实验入口:记录一次write调用前后的寄存器、内核栈和返回值,画出用户栈到内核栈再返回的时间线;边界:进入内核态不等于切换进程;中断、异常和系统调用的触发者与同步性不同。
核心机制:操作系统把处理器、内存、设备和持久数据变成受保护、可共享的抽象,并在失败时维持系统不变量;实验入口:跟踪cat读取文件:shell创建进程,运行库封装read,陷入内核,VFS定位文件,页缓存或驱动完成数据,再返回用户态;边界:操作系统不等于图形界面;库函数也不等于系统调用,必须按执行特权和责任归属区分。
核心机制:外部设备用异步中断请求处理,当前指令错误产生异常,主动陷阱用于受控服务请求;实验入口:把时钟中断、缺页、除零和系统调用放进同一事件表,逐项标出来源、返回点和可否重启;边界:同一术语在不同体系结构中命名可能变化,判断应回到事件来源与处理语义。
核心机制:ABI规定调用号、参数位置、返回值和错误约定;内核必须验证用户指针并安全复制数据;实验入口:用strace观察openat、read、write、close,比较高级语言一行代码与实际系统调用序列;边界:用户地址随时可能无效或被并发修改,内核不能直接相信长度、权限或字符串终止位置。
核心机制:观测先提出可证伪问题,再采集调用次数、返回码和墙钟时间,区分现象与解释;实验入口:运行最小Python跟踪模拟器,输入事件序列,输出用户/内核边界穿越次数与失败调用数;边界:计数器只能说明发生了什么,不能单独证明慢的原因;跟踪本身也有开销。
核心机制:宏内核、微内核、模块化和分层是在保护域、通信成本、故障隔离与演化之间做权衡;实验入口:为文件服务分别画宏内核调用链和用户态服务消息链,计算跨边界次数并列出故障扩散面;边界:微内核不是所有代码都在用户态,宏内核也不等于没有模块;标签不能替代具体服务放置。
核心机制:分派器按调用号选择处理函数,先验证参数与权限,再返回结果或稳定错误码;实验入口:实现纯Python分派器,对READ、WRITE、UNKNOWN与越界长度执行至少四组自动测试;边界:未知调用、负长度、越界缓冲和权限不足必须失败关闭,不能落入默认成功路径。