第30讲 · 课程总结
2026 南京大学《操作系统原理》第三十讲 · 课堂实录重构
| 主讲 | 蒋炎岩(Yanyan Jiang) |
| 视频 | https://www.bilibili.com/video/BV1q2jh6FEhX/ |
| 课程主页 | https://jyywiki.cn/OS/2026/ |
| 本讲讲义 | https://jyywiki.cn/OS/2026/lect30.md |
| 讲义 / 幻灯片作者 | 蒋炎岩,https://jyywiki.cn/ |
| 讲义 / 幻灯片许可 | CC BY-NC 4.0 |
| 图片来源 | 书中插图为课堂演示与讲义渲染图;演示类截图为视频画面 |
对应讲次:第30讲(南京大学 操作系统原理)
制作模型:deepseek-flash(coding-agent / pi;据 ~/.pi/agent/settings.json)
编者说明:本书由课堂录像的语音字幕重构而成,术语、章节骨架与参考链接已按课程官方讲义(
lect30.md)校准。讲师的口语风格、类比与案例被尽量保留;编辑性的补充一律以「编者说明」或「编者拓展」标出。
一、应用视角 & 硬件视角的操作系统(回顾)
(参考时间: 00:00)
从应用程序的视角看,操作系统就是一组管理硬件资源、提供应用生态支撑的 API(system calls)。你们写程序时看到的一切——Word、浏览器、VS Code 的插件——都是在虚拟化的环境(进程)里运行,向操作系统发系统调用:
- 想创建进程 → 进程管理 API;
- 想让一个非法指针指向的位置变得可访问 →
mmap; - 想创建线程、在多个线程间互斥同步 → 线程/锁/条件变量;
- 想在文件系统上留下持久痕迹、等待数据落盘 →
fsync。
编者拓展|计算机系统的公理:「凡是和应用程序开发相关、合理的事情,就一定有一个办法能做到。」——能在纯粹的计算里完成的(图灵机)就自己做;要和外部世界打交道(比如发射导弹),就必须借助操作系统。
硬件视角说来复杂(Linux 内核上千万行代码),但另一个角度看——硬件也看不到操作系统:
- CPU 是一个无情地执行指令的机器——「如果你把它想象成一个人,他手上有一本手册,每来一条指令就查一下手册、严格核对行为、执行」;
- CPU 也是一个「编译器」(动态数据流分析、乱序执行),但它不管你的指令到底干什么,只要合法、有权限就照单执行;
- CPU 和操作系统是一起进化的:摩尔定律到头 → 多处理器 → GPU → non-volatile memory,每增加一个新东西,操作系统也相应进化。
📷 复习的 top-level 提纲:应用视角 + 硬件视角的操作系统
回到原视频 (00:07:00)
二、UNIX Philosophy:小工具的合作
(参考时间: 00:11)
编者拓展|为什么 UNIX 的口碑一直比 Windows 好? 不是 API 的原因(Windows 的
GetProcess...更符合软件工程规范),而是应用生态的设计哲学:
- Windows:代表应用是 Adobe 全家桶、Visual Studio、Office——「我希望一个应用就解决你的一个问题,把所有的东西放在手边,最大限度服务新手用户」;
- UNIX:应用的生态里每一个东西都不是单独的——「任何一个应用一旦进入我的系统,它就成为这个系统的一部分,也成为所有其他应用程序的一部分」,鼓励应用之间的合作。
「这可能和管道得图灵奖也有关系——管道是一个非常干净的机制,实现了进程之间的协作。」「你们看 Linux 命令行会很害怕——因为它给你一个黑框说『这就是世界』。但 UNIX 的设计思想是:每一个小的工具把它做好,让世界上的工具去合作完成更大的事情。」
「Content as Code」:讲师把复习幻灯片做成一份代码——用 UNIX 小工具从原料生成:
find os2026 -name '*.pyc' ... # 找文件
grep -v 'Review & Comments' ... # 过滤干扰项
sort -V ... # 按版本/序号排序
grep 'os-demo' | uniq | pbcopy # 去重、送到剪贴板
📷 Content as Code:用 find/grep/sort/管道 把整个学期的 code demo 生成出来
回到原视频 (00:17:00)
编者拓展|今天的标准答案:你可以直接告诉 coding agent「帮我 collect 所有的 code demo,去掉重复,写在这里」——「这也是完全可以的。这就是 UNIX 给我们的最大启发:世界上的东西是可以在一起合作的。」而到了今天,「大模型成为了这个管道的终点。」
三、怎么复习(以及这门课真正想教的东西)
(参考时间: 00:07)
编者拓展|「考完就忘」与「留下的印象」:「这门课教给大家的一个精神内核不是那些具体知识点。你们总有一天会把为了考试记得的知识忘掉,但你会留下一些印象——哦,操作系统还可以做这个事;哦,原来还可以入侵另外一个程序的地址空间(这在 JavaScript 的模型里没有,但在进程模型里就是合理的)。」
精神内核就是:每当你想到任何问题,你都可以追问下去。「我说『复习完了,可以下课了』——你也可以不下课,往回走一步问:如果我要更好地复习操作系统课,有没有办法呢?然后去问 AI、和它 battle 几轮。」
用 coding agent 复习:
- 不要把整学期的 lecture notes 喂进去、说「猜猜蒋老师会出什么题」——那是模拟卷,是最后的验收;
- 正确的做法(就像高三的「五三」):穷尽一个 scope 里所有的可能性——为每一个 lecture、每一个知识点生成大量可能的题目,实现往年试卷近乎 100% 的覆盖率;
- 「你现在有一个核动力牛马,只要你充值。」「你可以为每一个知识点生成模拟题,甚至和室友用不同 prompt 生成十套模拟卷,最后看谁押中了——这是一个很好的社会学实验。」
📷 用 coding agent 复习:为每个知识点生成模拟题,实现近乎 100% 的覆盖
回到原视频 (00:20:00)
编者说明:讲师现场让 AI 出了一套题,AI 出的题目「还挺有创意」:关于并发锁的 quick quiz、关于
fork后文件描述符 offset 的例子、关于进程地址空间、关于 crash consistency……「但我的意志我不知道他读了哪些 lecture——这是他想的。我不会这样出题,我出的会比较严肃一点。」
「计算机世界里没有魔法」:每当感到困惑,就告诉自己——「计算机系统里没有魔法,一定有一个原因。」那个 fork 的例子(拷贝进程的所有状态,包括整个应用程序、library 的状态、所有操作系统对象)——「你的眼睛不能相信你的眼睛。」
📷 AI 出的考题(不代表讲师意志):fork、地址空间、并发、crash consistency……
回到原视频 (00:22:30)
四、技术回顾:从数字逻辑到三大主题
(参考时间: 00:33)
起点是数字逻辑电路的模拟器——「你们在 logic sim 里接线接到吐血,应该用一个程序化的方式用代码来接线。」动机的起点是一个管道(把一个程序的输出连给另一个程序作为输入),「之后做的所有事情就是把程序和操作系统的交互一层一层解开」。
- 从逻辑门到计算机:rv32ima 模拟器——只需定义 CPU state(32 个寄存器 + CSR + memory),程序就能跑起来;
📷 logic sim → rv32ima:从数字逻辑到可执行的计算机模型
回到原视频 (00:34:00)
- 把程序打开一点点:汉诺塔——「从道理上你认同递归,但从执行上总觉得有一点没弄明白」→ 非递归的汉诺塔(
simple-c)→ 每一个 stack frame 都要记住一个执行位置(PC); - 什么是编译器/编译优化:
x++再x++可以优化成x += 2;但 system call 是「优化不可穿过的边界」——「就像你做手术麻醉时,你的世界消失了;等你回来,世界变成什么样你已经完全不知道了」; - 进程/计算机系统的初始状态:CPU Reset → firmware → 操作系统 → 第一个应用程序。「从 Linux 第一个应用被加载,世界的控制权就完整交到了你手里。」
📷 进程 / 计算机系统的初始状态:CPU Reset → firmware → OS → 第一个应用程序
回到原视频 (00:40:00)
📷 非递归汉诺塔 / simple-c:每一个 stack frame 记住执行到哪里,system call 是优化边界
回到原视频 (00:37:00)
三大主题:
| 部分 | 核心 |
|---|---|
| Virtualization | 进程树、地址空间(Malloc Lab)、Everything is a file、文件描述符、execve/动态链接(LD_PRELOAD 变速齿轮)、从零构建应用生态 |
| Concurrency | 从 spawn 打开魔鬼的盒子、互斥/同步/条件变量、并发 Bugs;操作系统本身就是世界上最早的并发程序 |
| Persistence | I/O 设备(LED → 核弹发射器 → webcam)、存储设备的抽象、在 block device 上实现文件系统(append-only + random read = 任何数据结构)、crash consistency、overlayfs/FUSE |
📷 设备驱动:从 LED 灯、核弹发射器到 webcam——都是 struct file_operations
回到原视频 (00:50:00)
📷 Virtualization 主线:进程树、地址空间、Everything is a file、从零构建应用生态
回到原视频 (00:48:00)
编者拓展|Systems 的关键词:抽象:「操作系统世界底下的硬件非常复杂,但当你有了一个好的抽象,应用程序只要看到 system call,就不用看到硬件的复杂性。」「硬件的复杂性没有消失(比如
ioctl依然非常复杂),但我们可以在绝大部分时候都工作在一个非常干净的模型上。」「每一层抽象都是:屏蔽底下非常复杂的东西,并且把底下的能力尽可能暴露给上面。这就是 systems。」
五、未来会发生什么?
(参考时间: 00:55)
编者拓展|「Teaching is a powerful way to learn」:讲师说这是他第 9 年上操作系统课——「每一年我都会想,也许我之前所有的理解和讲法都错了。所以每一年都会和上一年有一点不同,有些地方开倒车,但相当多地方在进步。」他还透露:去年有一个想法拿了 UCAS 的 best student paper,下一份工作 release 后你会发现「我在操作系统课上讲过它」。
📷 Teaching is a powerful way to learn:每一年都重新思考该怎么做
回到原视频 (00:56:00)
Scaling Law:
- 深蓝击败卡斯帕罗夫(1997):计算机象棋能力随算力稳步上涨(与摩尔定律同步),到深蓝时投入大量资源、算法进步,加上硬件下棋电路+超级计算机,产生一个大台阶;
- AlphaGo(MCTS + 深度神经网络)→ 如今象棋 AI 已统治业余互联网象棋;
- 存储设备的 scaling(Kryder 定律):Google 不是偶然,Intel(1968 摩尔定律)、NVIDIA 更不是偶然——「每当一个指数级的 scaling 出现,就意味着一个领域要发生一次翻天覆地的变化」;
- GPU 的 AI ops scaling ——「这是一个对数坐标,看起来是一条直线,你觉得没有感觉,但这是一个指数级的增长」。
📷 Scaling Law:从深蓝到 AlphaGo,再到 GPU / 大模型的指数级增长
回到原视频 (00:57:00)
编者拓展|大模型的三个 scaling 维度:Pretrain-time scaling(更多数据/更好的书——「据说 Anthropic 买了很多绝版书当语料,然后把书烧了」)、Post-train scaling(有强反馈信号的地方——代码就是这样的领域,所以 Anthropic 在代码上取得成功)、Test-time scaling(reasoning:做完再检查一遍、再检查一遍……「你们中学学过这个技能」)。
「大模型的参数量和最佳训练 token 的比值不是几万几百,而是几十——也就是说,理想情况下大模型应该几乎记住了训练数据。」
📷 Post-train scaling:有强反馈信号的地方(如代码)能显著提升基础模型能力
回到原视频 (01:08:00)
📷 GPU/AI OPS 与 CPU 的性能 scaling:对数坐标下是一条直线(即指数级增长)
回到原视频 (00:59:00)
「从需求出发去解构问题」:这才是这门课真正想教的——
- 操作系统归根结底为应用程序服务:问「应用程序到底想要什么?操作系统怎么给?」
- git 的例子:不要记忆那些细碎的 git 命令,而要想「git 到底是用来干嘛的」——「我要管理文件系统快照,它是一个数据结构问题。tree of blobs、提交形成 commit 的有向无环图……从这个数据结构出发,就能自然地推导出 branch、stash、worktree。」「你自己从零开始推一遍、发明一次 worktree,你就不会忘记它了。」
编者拓展|「大学和人类其实都很危险」:讲师说他越来越相信 AGI 迟早要来。「老登们以他们的方式统治的大学/社会将进入一个不平衡的状态——如果给你配一个有 test-time scaling 的 agent,你可以在任何一个方面都做得比老人更好(你会用 AI 他不会)。」「坐牢式的服从性教学,会在 scaling law 底下崩塌。」
📷 AGI 与教育的未来:agent + test-time scaling 可能瓦解「服从性教学」
回到原视频 (01:10:30)
5.1 Vibe OS:世界上第一个「完全靠幻觉」的操作系统
(参考时间: 01:12)
讲师放了一段极其惊艳的演示(The world's first completely hallucinated operating system)——所有东西都是 AI 实时幻觉出来的,没有一行代码:
编者拓展|Vibe OS:一个自称「改变一切」的新操作系统——它是一个真实的系统(一个
.vhdx文件,1.3GB,可以裸机启动,主持人用 Hyper-V 启动)。界面上跑着经典的 Notepad、Calculator、Internet Explorer,而「这些应用里没有任何代码——没有按钮、没有事件处理器、没有逻辑,一切都是 AI 实时幻觉的」(比如5 ÷ 3 = 1.6)。「在你用的那些无聊的操作系统里,人们总在问『它是不是 AI』——在 Vibe OS 里这个问题不用问,因为答案永远是『是』。」它还能实时生成搜索内容、生成任意 App(「Commander X」、Microsoft Money 95……),甚至层层嵌套地模拟另一个操作系统。「Scott Hanselman 有自己的维基百科页面了……」——「这是我这辈子见过最伟大的东西。」
📷 Vibe OS 还能层层嵌套:在幻觉操作系统里再模拟一个操作系统
回到原视频 (01:19:00)
📷 Vibe OS:完全由模型实时幻觉出来的操作系统——没有一行代码
回到原视频 (01:14:00)
编者拓展|课程的未来:「恭喜大家上到了绝版的真人操作系统课——从明年开始我就没有这个 physical 的了(我们一直是『非法的』:共享课程号但不同的考试题)。」讲师说他会试着让这门课「有永生」:所有内容都是 code,可以持续更新,变成 public & open source;下学期会开一门新课——原想叫 vibe coding,但觉得过时太快,取名为 Generative Engineering(预计全部用一线国产模型),带大家实现各种「一开始觉得很疯狂、实现出来发现其实不需要多少 prompt」的东西。
结语
- 应用视角 & 硬件视角:操作系统 = 一组管理硬件资源、支撑应用生态的 API;CPU 是无情执行指令的机器,与操作系统一起进化;
- UNIX Philosophy:小工具的合作、管道、生态——大模型成为了管道的终点;
- 怎么复习:不要把它当成负担,用 coding agent 穷尽知识点、从 first principles 推导;
- 技术回顾:logic sim → rv32ima → 程序/system call → Virtualization / Concurrency / Persistence;抽象是 systems 的关键词;
- 未来:Scaling Law 的三个维度、AGI、Vibe OS、Generative Engineering。
编者拓展|给每个同学的话:讲师最后说——「知识可能总是有边界的,但你们的梦想其实是可以没有边界的。」「你们每一个同学都可以去想一想:在这个时代里会找到一个什么样的位置——未必一定要成为算法哥去做 AI infra,也许你的兴趣在另一个可能很人文的领域……你们每个人都可以去追求一下自己的梦想。」
附:官方参考与延伸阅读
本讲的讲义见课程主页,以下链接按书中出现顺序整理:
| 主题 | 链接 |
|---|---|
| 课程主页(2026) | https://jyywiki.cn/OS/2026/ |
| Vibe OS(完全幻觉的操作系统) | https://www.youtube.com/watch?v=QhH1bDA5K7A |
| Kryder 定律(存储 scaling) | https://en.wikipedia.org/wiki/Mark_Kryder |
| Sutton, The Bitter Lesson | http://www.incompleteideas.net/IncIdeas/BitterLesson.html |
| OSTEP:Operating Systems: Three Easy Pieces | https://pages.cs.wisc.edu/~remzi/OSTEP/ |
| git 对象模型(Pro Git: Git Internals) | https://git-scm.com/book/en/v2/Git-Internals-Git-Objects |
阅读材料:用 coding agent 穷尽复习每一个知识点;把本课程当作「从需求出发解构问题」的练习。
版权说明:本讲讲义与幻灯片作者为蒋炎岩,采用 Creative Commons BY-NC 4.0 许可,来源于 https://jyywiki.cn/OS/2026/。视频画面与字幕版权归原作者所有。本书为课堂内容的学习性重构。