第1讲 · Agentic AI 时代的操作系统课:绪论

2026 南京大学《操作系统原理》第一讲 · 课堂实录重构

主讲 蒋炎岩(Yanyan Jiang)
视频 https://www.bilibili.com/video/BV1opAfzpEf9/
课程主页 https://jyywiki.cn/OS/2026/
本讲讲义 https://jyywiki.cn/OS/2026/lect1.md
讲义 / 幻灯片作者 蒋炎岩,https://jyywiki.cn/
讲义 / 幻灯片许可 CC BY-NC 4.0
图片来源 书中幻灯片插图为课程官方渲染图;演示类截图为视频画面

对应讲次:第1讲(南京大学 操作系统原理)

制作模型:deepseek-flash(coding-agent / pi;据 ~/.pi/agent/settings.json)

编者说明:本书由课堂录像的语音字幕重构而成,术语、章节骨架与参考链接已按课程官方讲义(lect1.md)校准。讲师的口语风格、类比与案例被尽量保留;编辑性的补充一律以「编者说明」标出。


引子:这是一个急速变化的时代

(参考时间: 00:00)

这是新学年的第一次课。从去年到今年,计算机世界里发生了很多变化——讲师也因此感慨,也许自己差不多可以退休了。于是这学期的课程又做了一些修改,教学方式也与往年不同。

本讲按 Why → What → How 三条线展开:为什么要学操作系统、操作系统到底是什么、以及要怎么学。

整个学期的课程主线按 3 学分建设:每两周四节课,其中三节讲正课内容,另一节讲与 OS 相关的课外内容(例如 Agentic AI 与软件工程)。改革的根本原因,是讲师认为在 AI 时代,那些「同样的东西讲了十年二十年」的课,应该先把学时和学分减下来,再看怎么办。

编者说明:课程目标之一是真正理解「操作系统给我们带来了什么」。因此每节课都会带着「实现一点什么」的目标,去探索操作系统的 API 与背后的设计理念。另一个反复出现的主线,是含金量不断增加的 UNIX Philosophy。还有一个「违背祖宗的决定」:砍掉了所有内核内容——因为在 AI 时代,99.9% 的人不再需要知道那些特别底层的细节。

编者拓展|给 CS 初学者的三个基础概念:这是一门「系统课」,会不断出现新名词。本书对初学者可能陌生的术语,尽量在首次出现处用「编者拓展」解释,你可以把它们当作随手的「小抄」。先记住三个最基础的:

编者拓展|「内核(kernel)」是什么:操作系统可粗分为两半——内核是运行在特权态、直接管硬件、提供系统调用的核心部分(进程调度、内存管理、文件系统、设备驱动);用户态则是 shell、标准库、图形界面等普通程序。「砍掉内核内容」指本课不打算教你写一个内核,而是聚焦它对外提供的接口(API)与设计理念。


一、课程信息与个人简介

1.1 个人简介与课程改革

(参考时间: 00:01)

讲师自我介绍:教操作系统、做编程语言(PL)的「软工人」,身体里还有四分之一「理论」的血(ICPC World Finalist),给小学生出了十年比赛题,拿过 5 个 CCF-A 类 Paper Awards——不过这些「对于现在的 AI 时代来说,已经都入土了」。

作为计算机学院教学委员会成员,他操刀了新版教学计划:已经减下了学时,剩下的只能艰难推进;本学期课程按 3 学分建设,剩余课时讲 OS 相关的课外内容。

个人简介

📷 个人简介
回到原视频 (00:01:00)

1.2 课程简介

(参考时间: 00:03)

课程目标:真正理解「操作系统给我们带来了什么」。每节课都带着「实现一点什么」的目标,探索操作系统 API 和背后的设计理念,以及 UNIX Philosophy。AI 时代,99.9% 的人不再需要知道底层细节——因此砍掉了所有内核内容。课程仍会讲得稍深一些:你会知道怎么创建一个容器、做一个类文件系统,这些都是操作系统提供的能力,是今天构建复杂系统的重要组成。

课程信息:

课程简介

📷 课程简介
回到原视频 (00:03:15)

1.3 成绩组成

(参考时间: 00:06)

组成 占比 说明
期末考试 50% 以课堂内容为主
随堂期中测验 10% 大概在五一节左右;放轻松,跟上课堂示例代码即可
实验 40% MiniLab Only,都是有趣的编程实验(注意 AIGC Policy)

讲师坦言:因为「AI 替我上大学了」——把实验需求丢给 AI 就能自动完成并提交,所以实验比例被调低了一些。而期末考试「只有魔法才能打败魔法」(也参考了 AI 的帮助),侧重点是课堂上讲过的内容。期中测验若缺席,直接以期末成绩作为期中成绩。

课程简介:成绩组成

📷 课程简介:成绩组成
回到原视频 (00:06:30)

1.4 蹭课与 Online Judge

(参考时间: 00:08)

蹭课仅限校内同学,需通过报名链接,开学两周后截止;之后会通过 @smail.nju.edu.cn 发送 TOKEN(正式选修的同学无需报名)。

关于 Online Judge:希望完全开源——计划在 2027 年之后结束这门课(「早日退休」),并在秋季学期开一门面向所有人的「Vibe Coding」选修课,教大家怎样用软件工程的方式、配合 Coding Agent 来编程。

课程简介:蹭课

📷 课程简介:蹭课
回到原视频 (00:08:20)

1.5 意见与反馈

(参考时间: 00:10)

意见与反馈

📷 意见与反馈
回到原视频 (00:10:30)


二、Why:AI 时代还学操作系统吗?

2.1 AC(Anno ChatGPT)05 年

(参考时间: 00:13)

讲师把现在称为 AC(Anno ChatGPT)05 年——GPT 诞生后的第五年。五年时间并不漫长,但变化巨大:GPT-3.5 刚出来时,让它从 50 数到 100 都会卡在「50 51 52 52 52 52……」;专家们说大语言模型做不了推理。随后 o1、DeepSeek 等用强化学习把推理能力提了上来。

编者拓展|强化学习(Reinforcement Learning, RL):一种「试错 + 奖励」的训练范式——模型尝试解题,答对给奖励、答错给惩罚,反复迭代后学会「怎么想更容易对」。近两年大模型的「推理能力」(所谓「深度思考」)主要就是这么练出来的。

到 2025 年,AI 已经「屠榜」:

AC (Anno ChatGPT) 05 年

📷 AC (Anno ChatGPT) 05 年
回到原视频 (00:13:05)

编者拓展|token 是什么:大语言模型不按「字」或「词」处理文本,而是把文本切成一段段小块,每块叫一个 token(英文里常是一小段词,中文里可能是半字到几个字)。token/s 就是每秒能生成多少 token——15,000 token/s 意味着「按下回车,答案瞬间出现」。

编者拓展|Dense 与 MoE(Beam search 顺带一提):Dense(稠密)模型每次推理都要用到全部参数;MoE(Mixture of Experts,混合专家)把参数分成许多「专家」,每次只激活其中一小部分,于是能在总参数量很大(如 35B)时把单次推理开销控制得很小。文中提到的 Beam search(束搜索)是生成文本的一种经典搜索策略——同时保留若干条候选,最后挑最像样的。

编者说明:讲师用「填表」举例:把表格丢给 AI,它会读你的数据库,把需要填的字段都列出来,你只需复制粘贴——本来几分钟的事,变成十几秒。

2.2 从算法时代到 AI 时代:反思

(参考时间: 00:22)

算法时代:计算机能解决 mathematically well-formed(数学上良定义)的问题——数据持久化、约束求解、优化、加密……由软件工程师把现实世界的问题建模成可求解的数学问题,再提供给人访问的接口(App、GUI……)。

讲师举最短路径为例:它可以用集合论严格定义——图由点集 $V$ 和边集 $E \subseteq V \times V$ 构成,「最短路径」也能用集合论语言描述。计算机只能解决这样定义出来的问题。而现实世界(导航、信息系统、手机 App、点外卖)是不规整的,需要软件工程师把它翻译成计算机能求解的数学问题。「软件是物理世界过程在信息世界中的投影」——而这个投影,曾经只有受过训练的软件工程师能做。

编者拓展|「well-formed(良定义)」与「建模」:数学上「良定义」指一个问题的输入、输出与判定标准都用精确无歧义的语言写清楚了(例如「求图 $G$ 中 $u$ 到 $v$ 的最短路」)。现实需求(「帮我导航去机场」)往往是 ill-formed 的——目的地、偏好、约束都没说清。「建模」就是把它翻译成一个良定义的问题,这正是过去软件工程师的核心工作。

graph LR
    A["现实世界的不规整问题<br/>(ill-formed)"] -->|"软件工程师建模"| B["数学上良定义的问题<br/>(well-formed)"]
    B -->|"算法求解"| C["结果"]
    C -->|"App / GUI 接口"| D["人"]
    A -.->|"AI 时代:AI 直接从 ill-formed 中提取 well-formed 部分"| B

AI 时代:计算机能解决 ill-formed 的问题了——甚至可以从自然语言这种不规整的东西里,把 well-formed 的部分提取出来,调用工具求解(这就是 Agent)。

编者拓展|Agent(智能体):可以粗略理解为「会自己调用工具、多步完成任务的大语言模型」。普通大模型只输出文字;Agent 还能「动手」——读文件、执行命令、上网、调用别的程序,并根据结果决定下一步该干什么。它还具备动态生成一切(文本、声音、图像、界面……)的能力。

从算法时代到 AI 时代:反思

📷 从算法时代到 AI 时代:反思
回到原视频 (00:22:15)

编者说明:讲师由此畅想:也许手机 App 都会消失——手机变成一个「界面 + 聊天界面」,后台公司只提供 API,AI 动态生成为你个人定制的 HTML 页面。对老人、色盲等不同用户,字号、配色都可以个性化。很多行业会被直接消灭。

2.3 学 CS 还有意义吗?

(参考时间: 00:27)

残酷的事实:「软件已死,氛围当立」。博士研究生都不如 AI 好用——AI 技术已经使顶级的「人类劳动力」逐渐失去价值。讲师以自己的经验为例:他说的话往往只是根据对学生的了解、从逻辑上自然推导出来的,那「我能做,GPT 也能做」。

但 AI 今天仍有一件事做不好:做真正复杂的系统时,它做不了复杂系统的抽象理解——真正好的顶层设计。比如设计一个操作系统,不是「解一个内核」这样的问题,而是要成功地支撑起百万、千万级的应用生态;这需要设计一套对广大开发者友好的 API。这可能是人类智慧、CS 学生的「最后一道线」。想超越 AI,唯一能做的就是把这种顶级的顶层抽象做好。

BUT!复杂系统的实现仍然需要抽象——抽象是分解和隔离复杂性的途径。《操作系统》传递的 takeaway message,就是抽象层的设计与实现:

编者拓展|CLI 与 GUI:CLI(Command-Line Interface,命令行界面)是通过输入文本命令来操作程序(如 ls、git);GUI(图形用户界面)则是用鼠标点按钮。CLI 特别受 AI Agent 青睐,因为「文本进、文本出」的组合方式极其灵活。 - 操作系统(和上面的应用生态)赋予 AI 手和脚:显示界面、发送网络、隔离虚拟环境……并且安全、可靠、高效、有保障。

学 CS 还有意义吗?

📷 学 CS 还有意义吗?
回到原视频 (00:27:45)

2.4 舞台已经搭好,去书写你的传奇

(参考时间: 00:33)

《操作系统》是你的最后一门编程课:学完它,你会知道一个程序能做什么、为什么能做:

Neovim:Ctrl-C 无法退出,需要输入 :qa

📷 Neovim:Ctrl-C 无法退出,需要输入 :qa
回到原视频 (00:35:50)

graph TD
    A["你的 .c 程序"] --> B["编译/链接"] --> C["a.out(状态机)"] --> D["CPU 执行"]
    D --> E["调用操作系统 API(syscall)"]
    E --> F["操作系统对象:进程、文件、设备……"]
    F --> G["硬件(状态机)"]

AI 时代赋予了每个人追寻童年梦想的能力。曾经的名言是 Linus 的 Talk is cheap, show me the code;今天反过来了——Code is cheap, show me the talk:只要你能把问题说清楚,AI 就能生成完美的答案。当然,前提是你首先要能掌控代码。

舞台已经搭好,去书写你的传奇

📷 舞台已经搭好,去书写你的传奇
回到原视频 (00:33:05)


三、What:什么是操作系统

3.1 操作系统的定义,以及「不需要定义」

(参考时间: 00:39)

教科书(OSTEP)的定义是:

Operating System: A body of software, in fact, that is responsible for making it easy to run programs (even allowing you to seemingly run many at the same time), allowing programs to share memory, enabling programs to interact with devices, and other fun stuff like that.

但读完这段会有很多疑点:「Programs」就完了?我们看到的一切都是 program——窗口管理器(Sway)、终端、浏览器、虚拟机、Claude Code……而「shared memory, interact with devices, …」又到底指什么?

操作系统:定义

📷 操作系统:定义
回到原视频 (00:39:20)

讲师的态度是:我们不需要一个精确的教科书定义。因为定义是对整个东西的高度概括,而概括会压缩损失太多东西。操作系统是来帮我们的,不是来折磨我们的——它帮我们更好地开发程序。理解操作系统的最好方式,是理解它发展的历史:任何事物在刚开始时都很简单(今天的 AI 也正处在一个比较简单的时期),看它怎样一步步从简单到复杂。

理解历史有三条重要线索:

以「操作系统 = 管理硬件和软件的软件」为出发点:

  1. 硬件(计算机)——操作系统直接接管硬件;
  2. 软件(程序,本课程的主要视角)——各种应用程序;
  3. 操作系统——夹在硬件与软件中间的那一层。
graph TD
    S["软件(程序)"] --> O["操作系统"]
    H["硬件(计算机)"] --> O
    O -->|"对单机(多处理器)抽象<br/>支撑应用生态"| S
    S -->|"API / 系统调用"| O
操作系统:不需要定义

📷 操作系统:不需要定义
回到原视频 (00:40:35)

3.2 复习:理解计算机硬件(电路)

(参考时间: 00:44)

《数字逻辑电路》课学的其实是一个极简的公理系统:导线、时钟、逻辑门、触发器。就这四样东西,就足够构建任何数字计算系统——包括高性能计算机。

编者拓展|逻辑门与触发器:逻辑门(与/或/非……)是最基本的运算电路,输入 0/1、输出 0/1;触发器(flip-flop)是能「记住」一个 bit 的电路。导线负责传信号,时钟负责给整个电路打拍子——这四样东西组合起来就能搭出任何数字系统。

讲师为了向大家证明这一点,特意(让 AI 帮忙)写了一个数字逻辑电路模拟器:

这其实就是 nvboard 的基本原理,也再次展示了 UNIX Philosophy:logisim 这样的 C 程序输出 A=0; B=1; ... 的文本,另一个程序负责解析并把它「画」出来(甚至画成 7 段数码管)。

复习:理解计算机硬件(电路)

📷 复习:理解计算机硬件(电路)
回到原视频 (00:44:05)

数字逻辑电路模拟器:用逻辑门实现 7 段数码管(logisim.c)

📷 数字逻辑电路模拟器:用逻辑门实现 7 段数码管(logisim.c)
回到原视频 (00:46:30)

seg-display.py:把模拟器输出的电平画成数码管

📷 seg-display.py:把模拟器输出的电平画成数码管
回到原视频 (00:56:50)

编者说明:讲义还收录了一篇关于 ASCII Art 的说明——它起源于缺乏图形显示能力的打字机与早期计算机,人们用文本字符拼凑图像;在 BBS 与早期互联网时期迎来黄金期,成为极客文化的重要载体,今天仍作为复古美学活跃在代码注释、终端界面与网络梗中。

3.3 为什么要用「一份代码」上课:Content as Code

(参考时间: 00:48)

这学期做了一个有趣的改动:所有课程内容都在一份代码里。比如一页幻灯片就是一个 Python 函数,形如:

with Vibe():
    slideshow()
    ...

受 Remotion 的启发,这样就能做到真正的前后端分离:用写代码的方式描述一节课,再把它任意地渲染成命令行界面或网页(用 CSS 把它渲染得很好看),还能做可控的 AIGC 与代码演示。

为什么要用这个方式上课?

📷 为什么要用这个方式上课?
回到原视频 (00:48:20)

Content as Code:没什么东西不能用代码表示——图形/动画(SVG、matplotlib、Remotion)、幻灯片(Markdown、HTML、CSS)……

程序化的好处是人类、AI、机器都友好:

一旦上课内容变成代码,它本身就变成了一份日志:可以看到「哪一分钟做了什么事」。于是可以根据日志自动生成 lecture notes,也可以让 AI 生成一个为每个听众定制的操作系统课——比如用你喜欢的二次元形象来讲课。呈现方式可以变,讲的内容不变。

Content as Code

📷 Content as Code
回到原视频 (00:52:05)

用一份代码 + Claude Code 讲课

📷 用一份代码 + Claude Code 讲课
回到原视频 (00:50:40)

编者说明:讲师的终极目标是「退休」——把所有上课的东西以可传承、可开源的方式放到公开领域,让 AI 能根据讲义上下文回答任何问题,甚至生成定制化的数字人。他说:「大学教师危在旦夕」,但也强调:顶层设计仍是 AI 做不好的地方——有一份好的顶层设计,所有执行 AI 都做得非常好。

3.4 会编程,你就拥有全世界

(参考时间: 00:55)

Logisim 是本次课程的第一个彩蛋:用同样的方式可以模拟任何数字系统(包括计算机系统),同时体验了 UNIX 哲学:

Make each program do one thing well. Expect the output of every program to become the input to another. Use text interface.

命令行是一个非常有趣的设计:它在自然语言和编程语言之间达到了平衡——因此大语言模型(Agent)用起来得心应手。

会编程,你就拥有全世界!

📷 会编程,你就拥有全世界!
回到原视频 (00:55:05)

编者说明:UNIX 的经典之处,是设计了一组可以任意组合、自由复用的工具。这恰是今天 Agent 的 Skills/MCP 所欠缺的:编程语言里的东西可以无限组合、自由复用,而且复用的代价极低;而 AI 必须把所有东西都读进来再复用。

3.5 复习:理解计算机软件(程序)

(参考时间: 00:58)

《计算机系统基础》课教的是一个流程:高级语言代码 → 指令序列 → 二进制文件 → 处理器执行。核心一句话:Everything is a state machine。

编者拓展|编译、链接、可执行文件、状态机:编译(compile)把高级语言(C)翻译成汇编/机器指令;链接(link)把你自己写的代码和库函数(如 printf)拼成一个完整的可执行文件(Linux 上是 ELF 格式)。「状态机(state machine)」指「有一组状态 + 一组确定的规则,每次按规则从一个状态走到下一个状态」——程序、CPU、乃至整个计算机都可以这样描述。

复习:理解计算机软件(程序)

📷 复习:理解计算机软件(程序)
回到原视频 (00:58:40)

在 GDB 里调试程序时,你能看到程序的当前状态(局部变量、调用栈);还有一个很重要的状态——PC(Program Counter,程序计数器),就是那个黑色标记所在的位置。程序总是从 PC 处取出一条语句来执行,一条 single step 就让程序往前走一步。

讲师用汉诺塔(最经典的递归例子)演示:他把程序做成了一个可视化调试器。

汉诺塔 GDB 调试器:单步执行,状态可视化

📷 汉诺塔 GDB 调试器:单步执行,状态可视化
回到原视频 (01:02:10)

编者说明:既然硬件、软件都是状态机,我们就可以写一个函数把软件状态可视化出来——例如真实的汉诺塔状态。这个学期在遇到难理解的代码时,会反复用这种「状态可视化转换器」的技术。这也是一个「你能想到的事一定有人做到」的例子。

3.6 到底什么是操作系统

(参考时间: 01:03)

本课程讨论狭义的操作系统:硬件和软件的中间层,对单机(多处理器)作出抽象,支撑应用程序生态的平稳运行。这个概念可以推广到各种「Systems」:对多台计算机抽象(分布式系统)、对存储设备抽象(存储系统)……

从这个角度看,操作系统就是一个程序的管理者:

编者说明:这个「抽象层」的思路可以推广——把 GPU 的众多核心抽象成 CUDA 编程模型;把很多台机器抽象成分布式系统;把存储抽象成存储系统。

到底什么是操作系统?

📷 到底什么是操作系统?
回到原视频 (01:03:40)


四、操作系统的发展历史

(参考时间: 01:05)

4.1 1940s:一个新时代的诞生

(参考时间: 01:06)

ENIAC(1946.2.14) 是世界上的第一台计算机。它与今天的冯·诺依曼计算机不太一样:它是「图灵机」的数字电路实现尝试,也是一个状态机模型,有 PC 的概念——但 next PC 是用物理线路「hard-wire」(硬连线)的,重编程需要重新接线(参见 Programming the ENIAC)。在一个周期里,所有寄存器都可以更新。

一个新时代的诞生:ENIAC

📷 一个新时代的诞生:ENIAC
回到原视频 (01:06:00)

1940s 的硬件:

1940s 的计算机硬件

📷 1940s 的计算机硬件
回到原视频 (01:07:25)

编者说明:延迟线的天才之处在于——用一根线、一个放大器和一个读写电路,就能暂时保存大量 bit。它和今天用电容(DRAM,行列选通)或磁芯存储是同一个思路的不同实现。

1940s 的软件:打印平方数、素数表、计算弹道……这解释了《程序设计》教科书上那些经典习题的来源——最早的软件就包括打印素数表,因为它展示了计算机「可以做循环」的能力。如果大家对「为什么要做这些」有疑问,说明教科书没有把历史讲好。那时人们还在和真正的「bugs」战斗——第一只 bug 真的是一只卡在继电器里的虫子。

1940s 的计算机软件

📷 1940s 的计算机软件
回到原视频 (01:10:40)

1940s 的操作系统:没有操作系统。甚至连编程语言都没有:程序是直接在打孔纸带上打出的 0/1 序列,用指令直接操作硬件(例如用一条像 out 那样的指令,把 8 bit 数据送到打孔机的端口)。能把程序跑起来就很了不起了,不需要画蛇添足的程序来管理它。

编者说明:讲师说,这「颇像今天 Agents、MCP、Skills 所处的时代」——历史总是相似的。

1940s 的操作系统

📷 1940s 的操作系统
回到原视频 (01:12:20)

4.2 1950s:算力成为服务,操作系统概念形成

(参考时间: 01:15)

硬件:晶体管、磁芯内存、更丰富的 I/O 设备。磁芯内存和今天 DRAM 很像(行列选通、交叉点上有存储单元,只不过那时用磁铁而非电容)。I/O 设备(打孔纸带等)的速度严重低于处理器,于是中断机制出现(1953)。

编者拓展|中断(interrupt):设备完成一次 I/O 后,主动「按铃」通知 CPU(而不是让 CPU 一直傻等),CPU 暂停手头工作、跳去处理,处理完再回来。中断是操作系统的命脉——没有它就没有时间片、没有并发、没有现代 OS。

1950s-1960s 的计算机硬件

📷 1950s-1960s 的计算机硬件
回到原视频 (01:15:10)

软件:更复杂的通用数值计算——高级语言与 API 诞生(Fortran, 1957):一行代码对应一张卡片,80 行的规范沿用至今。Fortran 已经足够好用,迎来了自然科学、工程机械、军事等领域对计算机需求的暴涨。

1950s-1960s 的计算机软件

📷 1950s-1960s 的计算机软件
回到原视频 (01:16:50)

1950s-1960s 的计算机软件(续)

📷 1950s-1960s 的计算机软件(续)
回到原视频 (01:18:00)

一个计算三个整数之和的 Fortran 程序(讲义里带了 READ(5,10) 等语法)。Content as Code 的好处之一,就是可以让 Coding Agent 直接解释这段代码。

操作系统:库函数 + 管理程序排队运行的调度代码。写程序(戳纸带)、跑程序都非常费事,而计算机非常贵($50,000–$1,000,000,通常一个学校只有一台)。于是需要操作员(operator)负责程序切换,多用户轮流共享计算机——「算力成为服务」,操作系统(作業系統)的概念形成。

1950s-1960s 的操作系统

📷 1950s-1960s 的操作系统
回到原视频 (01:19:10)

CTSS(Compatible Time-Sharing System) 中,操作系统中出现了各类对象(设备、文件、任务……),并提供了 CTSS Subroutines 这样的「抽象层」——这些功能如今已成为编程语言与标准库的一部分(如 RDFLXA 读一行、WRFLX 写一行、GETMEM/SETMEM、TSSFIL……)。

1950s-1960s 的操作系统:CTSS

📷 1950s-1960s 的操作系统:CTSS
回到原视频 (01:21:00)

编者说明:那时诞生了许多经典调度策略(如「短作业优先」,可证明平均等待时间最低)。它们的出现有现实的历史原因——计算机可能整个学校只有一台,一个时刻只能跑一个程序。

graph TD
    A["1940s:无操作系统<br/>程序直接操作硬件"] --> B["1950s:作业调度 + 库函数<br/>操作员切换程序"]
    B --> C["1960s:可切换 / 恢复<br/>多程序同时驻留内存"]
    C --> D["1970s:时间片<br/>中断驱动的时分复用<br/>= 现代操作系统"]

4.3 1960s:资源虚拟化

(参考时间: 01:23)

硬件:集成电路、总线出现;更快的处理器;更快更大的内存,虚拟存储出现(可以同时载入多个程序而不用「换卡」);更丰富的 I/O 设备与完善的中断/异常机制。

1960s-1970s 的计算机硬件

📷 1960s-1970s 的计算机硬件
回到原视频 (01:23:00)

软件:更多高级语言与编译器出现——COBOL (1960)、APL (1962)、BASIC (1965)、PASCAL (1970)、C (1972)。计算机科学家在「今天难以想象的计算力」下写出许多沿用至今的程序(如交互式绘图系统 Sketchpad)。

1960s-1970s 的计算机软件

📷 1960s-1970s 的计算机软件
回到原视频 (01:26:25)

个人电脑登上历史舞台:Altair 8800(1975),以及 Bill Gates 和 Paul Allen 的传奇故事——第一台 8800 还没被生产出来(只有图纸),他们在大型机上写了一个模拟器,用纸带坐飞机从东海岸到西海岸,在旅馆里把程序装到第一台 8800 上成功运行。这与《计算机系统基础》课上写的模拟器不谋而合(推荐阅读 Fire in the Valley)。

个人电脑登上历史舞台

📷 个人电脑登上历史舞台
回到原视频 (01:27:15)

操作系统:资源虚拟化——内存和磁盘的空分复用非常「自然」(MMU → 进程),借助中断实现 CPU 的时分复用。

编者拓展|MMU 与虚拟内存:MMU(Memory Management Unit,内存管理单元)是 CPU 里的一个硬件,负责把程序看到的「虚拟地址」翻译成真实的「物理地址」。有了它,每个进程都以为自己独占一整块内存、互不干扰——这就是虚拟内存,也是进程隔离的基础。

关键的转折点在于:当内存足够大、可以把多个程序同时载入内存后,程序在做 I/O(如写大量数据)时主动让出 CPU,操作系统就能切换去执行另一个程序,执行完再恢复。于是操作系统从「只负责加载/结束」变成「负责切换和恢复」。

再进一步:给运行中的程序一个中断,就可以在任何时刻打断它、切换到另一个程序,过一段时间再切回来——这就是时间片。有了 CPU 的时分复用,你写一个死循环计算机也不会卡死,这标志着真正进入了现代操作系统。

编者拓展|时间片与上下文切换:把 CPU 的时间切成很短的一段段(如几毫秒),让每个程序轮流用一小段,就叫时间片轮转。切换时,操作系统要保存当前程序的全部状态(寄存器、PC……),再恢复下一个程序的状态,这个动作叫上下文切换(context switch)。

1960s-1970s 的操作系统:资源虚拟化

📷 1960s-1970s 的操作系统:资源虚拟化
回到原视频 (01:29:22)

4.4 1970s+:UNIX 与应用生态

(参考时间: 01:30)

UNIX 奠定了 pre-AI 时代计算机世界的基础:

编者拓展|管道与 grep:管道(pipe)把前一个程序的输出直接接到后一个程序的输入(例如 cat a.txt | wc -l),是 UNIX 最著名的发明;grep 是一个按模式搜索文本的小工具(你会发现本书和 AI Agent 都离不开它)。 - 1983:BSD socket(对象); - 1984:procfs(对象)……

编者拓展|socket 与 procfs:socket(套接字)是网络通信的接口(「一切皆文件」的又一例);procfs 是挂在 /proc 下的虚拟文件系统,把内核里的信息(进程列表、状态……)以「文件」的形式暴露给你看。二者都是 UNIX「一切皆文件」哲学的体现。 - UNIX 衍生出庞大的家族:1BSD (1977)、GNU (1983)、MacOS (1984)、AIX (1986)、Minix (1987)、Windows (1985)、Linux 0.01 (1991)、Windows NT (1993)、Debian (1996)、Windows XP (2002)、Ubuntu (2004)、iOS (2007)、Android (2008)、Windows 10 (2015)……

然后是大家熟悉的故事:PC 普及、云计算、智能手机、AI 时代……

1970s+ 的操作系统和应用生态

📷 1970s+ 的操作系统和应用生态
回到原视频 (01:30:40)

4.5 2030s+:展望

(参考时间: 01:32)

操作系统不再是只给「人」用了。Model context 也会和 OS 交互——底层的操作系统也许不会变,但会增加更多的抽象层。Model context 类似于「一个人」(agent):「人」可以调用工具、创建分身、互相抬杠……

从 1970 年至今,操作系统经历了很大变化,但核心理念没有变——它就是管理程序的系统。三个最重大的变革是:① 执行完一个程序再执行另一个;② 可以切换;③ 时分复用处理器。下一个里程碑会是什么?也许在 2030 年,操作系统不再只是给人用,还要给 AI 用。

2030s+ 的操作系统:展望

📷 2030s+ 的操作系统:展望
回到原视频 (01:32:05)


五、How:怎么学习操作系统

5.1 找到乐趣和动机

(参考时间: 01:33)

上课是为了理解人类文明的高光时刻:基本动机、基本方法、里程碑、走过的弯路,以及走向应用、创新、革命。《操作系统》课的主题很明确:就是一套 API,支撑起一切了不起的软件。上课也是实现童年梦想的途径——每一节课都让你「能力增长」,并且马上就能用获得的新能力做点什么。

找到乐趣和动机

📷 找到乐趣和动机
回到原视频 (01:33:00)

5.2 忘掉 Reward Hacking 的本能

(参考时间: 01:34)

大学教育是为了 long-term reward(实现梦想)。即便分数很重要,也可以用更合理的学习方法:我们不考犄角旮旯的细节——不是没有细节,而是只要你真正理解了 first principles,就可以根据自己的理解补充细节。

坚守 Academic integrity:「诚朴雄伟」的精神。世界上已经没什么「学不懂」的东西了——相比大家,讲师更苦恼的是「没时间学」。不再需要为了眼前的分数而损失更长期的价值。

编者说明:讲师坦言:「其实我是觉得 AI 时代,大学没什么用了」——但紧接着强调,要在这门课里把「你能做一个有亮点的东西」的能力练出来。

忘掉 Reward Hacking 的本能

📷 忘掉 Reward Hacking 的本能
回到原视频 (01:34:15)

5.3 拥抱新时代

(参考时间: 01:35)

拥抱新时代

📷 拥抱新时代
回到原视频 (01:35:05)

5.4 AIGC Policy

(参考时间: 01:35)

编者拓展|AIGC:AIGC = AI-Generated Content(人工智能生成内容)。本课的 AIGC Policy 划了一条线:学习时可以尽管用 AI(解释概念、生成调试/可视化代码),但实验的核心实现必须自己手写——否则你学不到操作系统本身。

日常学习:鼓励使用 AI 辅助——解释概念、命令行工具、API;获取方法指导(用什么工具调试、如何调试、有何技巧);生成辅助性代码(调试、可视化……)。这些都可以做成 Copilot 随时随地帮助你。

MiniLab:仅限单个 API 使用的生成,禁止把自然语言需求翻译成代码:

约定:上课时所有的辅助(包括讲师自己的演示)都是 AI 生成的,这完全鼓励;但做实验时,为了更好理解操作系统,禁止直接用 AI 替你做作业——你只能把 AI 的生成局限于某一个局部的 API 使用,其余部分(如何与作业的其他部分交互)必须手写。

AIGC Policy

📷 AIGC Policy
回到原视频 (01:35:40)


总结(Takeaways)

操作系统是软件和硬件之间的桥梁。因此我们「找到」一些合适的软件、一些相对简单的硬件,理解操作系统就会变得容易——本课程通过讲解操作系统上的应用,帮助你实现「编程」的梦想。


附:官方参考与延伸阅读

主题 链接
课程主页 https://jyywiki.cn/OS/2026/
教科书 Operating Systems: Three Easy Pieces Preface、第 1 章 Dialogue on the Book、第 2 章 Introduction to Operating Systems
个人简介(知乎) https://zhuanlan.zhihu.com/p/1986494838795941546
数字电路模拟器 Demo https://jyywiki.cn/OS/demos/intro/logisim
nvboard https://github.com/NJU-ProjectN/nvboard
RISC-V 处理器模拟器 / mini-rv32ima https://jyywiki.cn/OS/demos/intro/mini-rv32ima · https://github.com/cnlohr/mini-rv32ima
汉诺塔 Demo https://jyywiki.cn/OS/demos/intro/hanoi-nr
Remotion(用代码做视频) https://www.remotion.dev/
Groq / LLaMA3 8B 15,000 token/s https://chatjimmy.ai/
Stack Overflow helped 1,000,000 developers exit Vim https://stackoverflow.blog/2017/05/23/stack-overflow-helping-one-million-developers-exit-vim/
StackOverflow is dying https://www.digit.in/features/general/stack-overflow-is-dying-blame-it-on-chatgpt-and-ai-coding-tools.html
Programming the ENIAC https://ieeexplore.ieee.org/stamp/stamp.jsp?tp=&arnumber=8467000
Fire in the Valley https://www.amazon.com/Fire-Valley-Birth-Personal-Computer/dp/1937785769
Academic integrity (MIT) https://integrity.mit.edu/

延伸阅读:课程网站(首页信息、课程概述、参考书与参考资料、生存指南);如果有兴趣,可阅读 Harley Hahn's Guide to Unix and Linux。

版权说明:本讲讲义与幻灯片作者为蒋炎岩,采用 Creative Commons BY-NC 4.0 许可,来源于 https://jyywiki.cn/OS/2026/。视频画面与字幕版权归原作者所有。本书为课堂内容的学习性重构。