← 返回 操作系统

操作系统

第三章

第三章的主线是把系统从批处理推进到更完整的内核执行流,重点落在任务控制块、yield 与时钟中断、trace 调试、文件描述符扩展以及设备交互能力上。和前两章相比,这一章更强调“内核如何真正管理任务与系统调用过程”,而不只是把程序顺序跑完。

实验要求可以概括成几部分:第一,补强 ch3 的任务管理主线,理解并实现 TCB、任务切换、yield 和 timer 驱动的调度基础;第二,梳理 syscall/trap 过程中的 trace 调试链路,把用户态到内核态再返回用户态的执行流看清楚;第三,在原有 fd=1/2 的基础上扩展到 fd=3 等文件描述符使用场景;第四,把 VirtIO-GPU、Keyboard、地址冲突和 snake-ci 这些实验和调试点整理进统一理解框架。

这一章真正要实现的核心内容包括:从 ch2 过渡到 ch3 的任务管理结构,明确 TCB 在保存任务状态、上下文与调度信息中的作用;理解 yield 是主动交出 CPU,而 timer 中断提供了被动切换机会;通过 trace 观察 trap 进入、syscall 分发、返回用户态等关键路径;并在此过程中处理设备接入、地址冲突和图形/输入扩展实验带来的工程问题。

你这次补强的三份文档把学习链路理顺得很完整:不仅整理了 ch2 到 ch3 的主线变化,也把之前问答里那些关于 TCB、yield、timer、trace、fd=3 和设备扩展的问题都收敛成了可以复盘的答案。这样这一章不只是“代码能跑”,而是能把为什么这样设计、为什么这样调试讲清楚。

如果一句话总结第三章,就是:这一章让内核从“顺序执行一批程序”进一步走向“真正管理任务、处理调度、跟踪 trap/syscall 路径,并能在更复杂设备与实验场景下稳定演进”的阶段。

GitHub 仓库:flyyansii/Tg-rCore-Tutorial-2026S

GitHub 提交:73af24d expand ch3 learning notes

CNB 提交:97fdb51 expand ch3 learning notes