尧图网站设计 尧图网站设计YAOTU DESIGN
ARTICLE DETAIL

资讯详情

深耕网站设计与一线实操的经验洞察。

南京大学 操作系统 (JYY) 学习笔记:最终章——操作系统的宇宙,与我们的星辰大海

南京大学 操作系统 (JYY) 学习笔记:最终章——操作系统的宇宙,与我们的星辰大海 写在前面这是本系列的最后一篇第二十九篇。在一整个学期的课程中我们学习了“应用视角的操作系统”操作系统就是一组管理了硬件资源、提供应用生态支撑的 API。我们从“Everything is a state machine”的视角出发从fork/execve/exit的极简模型一路见证了虚拟化、云计算、移动操作系统的磅礴时代。本讲内容课程总复习。回望过去走向未来。我们学了个啥在这个 AI 呼啸而来的时代我们又该如何找到自己的位置我们学了个啥 (A Story on Operating Systems)从逻辑门到计算机系统计算机系统的“公理系统”数字系统 状态机状态触发器 (bit array)迁移组合逻辑 (真值表)Everything is a state machine (万物皆状态机)操作系统本质上就是这些庞大状态机的管理者。“数码管”作为第一个例子我们见识了 UNIX Philosophy (UNIX 哲学) 和“编程”的极致力量。彩蛋JYY 老师的复习提纲是直接使用 UNIX 工具链和哲学生成的。彩蛋在这个时代我们可以大胆地让 AI 帮我们写代码。Virtualization (虚拟化)所有的 API 绝不是靠死记硬背 Manual (手册) 来学习的。而是要学习 OS 背后的应用生态理解每个系统调用究竟是为了满足什么真实的业务需求……记住OS 绝对不会提供没用的、用处很小的、或者可以被轻易替代的 system call。状态机管理fork,execve,exit,signal,killfork是代价极低的一个拷贝操作利用了底层的 Copy-on-Write写时复制。例如它可以运用在 Server 中定期fork出来在后台做数据快照备份极大地避免 Crash 导致的数据丢失。进程的地址空间mmap,munmap,mprotectmmap你需要一个fd它不仅能用来映射文件还能直接分配内存是内存管理的终极核心。操作系统对象open,pipe,mkfifo,close,read,write其他getpid- 进程在系统中构成了一棵庞大的树状结构。这就是最初的 UNIX 系统设计。我们更应该思考的内容是什么样的行为才是用户真正想要的比如你在终端按下Ctrl C杀掉的进程到底是谁背后牵扯到进程组、控制终端等极客概念。Concurrency (并发)原子操作atomic_inc,atomic_cmpxchg线程管理clone(spawn),exit,exit_group同步和互斥futex(P,V,join,mutex_lock,mutex_unlock…)wait- P 操作等待并消耗信号量 - 1post- V 操作创造并释放信号量 1Persistence (持久化)文件系统是 Linux System Call 极为重要的基础。我们常说的 “Everything is a state machine”也完美地蕴含了 UNIX 的终极浪漫“Everything is a file”。文件 (数据 元数据) 管理open,read,write,close,stat,chmod,chown,fsetxattr/fgetxattr,ftruncate…目录树管理mount,mkdir,readdir,link,symlink,unlink,rename,chdir…挂载、创建目录、符号链接。一致性管理syncsyncfsfsyncfdatasync其他flock,pivot_root…从逻辑门到计算机系统一个清晰的轮廓打印 Hello World 的完整生命周期应用程序 (app) $ \rightarrow $ 加载器 (ld.so) $ \rightarrow $ 库函数 (libc) $ \rightarrow $ 系统调用 (syscall) $ \rightarrow $ 内核态 $ \rightarrow $ 硬件。操作系统课给这个稍显复杂的过程赋予了一个极其清晰的轮廓你可以在这其中的每一步都对应到一个具体的示例 C 代码。这种“扒开外壳看本质”的过程让你真正体会到“这一切都是可以被掌控的”一个改变全人类的 Prompt:“我在做 [X]。如果你是一位专业人士有更好的方法和建议吗尽可能全面。”《操作系统》你真正的“编程”启蒙课你不再惧怕任何 “System”嵌入式系统、通用操作系统、数据库系统、分布式系统、二进制安全……这些看起来高深莫测的名词底层不过是一组组封装好的 API 和状态机。你也不再惧怕任何“需求”的实现只要操作系统底层的 syscall 能支持的我都能用代码把它手搓出来回望过去JYY 的课程总结上操作系统课的乐趣“在课堂上时你可以思考一些已经很清楚的基本东西。这些知识是很有趣、令人愉快的重温一遍又何妨另一方面有没有更好的介绍方式有什么相关的新问题你能不能赋予这些旧知识新生命……但如果你真的有什么新想法能从新角度看事物你会觉得很愉快。”“学生问的问题有时也能提供新的研究方向。他们经常提出一些我曾经思考过、但暂时放弃、却都是些意义很深远的问题重新想想这些问题看看能否有所突破也很有意思。”“学生未必理解我想回答的方向或者是我想思考的层次但他们问我这个问题却往往提醒了我相关的问题。单单靠自己是不容易获得这种启示的。”—— 理查德·费曼 (Richard P. Feynman)Teaching is a powerful tool to learn教学相长。在教操作系统的过程中甚至能产出顶级的学术成果。EuroSys’25 Best Student Paper: “Understanding the Linux kernel, visually”八周目的主要改进 (做了一个违背祖宗的决定)把繁杂的内核实现踢出操作系统课课程只聚焦于OS 对象和 Programming Interface编程接口。保持了和神书 OSTEP 的 Coherence。事实证明效果极佳99.9% 的同学未来并不会从事 OS 内核底层的开发如果真的需要凭借这门课打下的底层认知课后再去补源码也是完全可行的。把基础的 OS Interface 讲透让你知道为什么会拥有这个 API它能用来干什么它为什么好……这就足够了。引入了更多的 AIGC在准备新内容时老师也大量使用了 AI。Prompt: “下面是我的《操作系统》课程 slides其中的描述是否准确是否有补充和展开的地方”看到的大机会一个完全“模块化”、拥抱 AI 的现代课程。我们也许值得试一试呢JYY 甚至还想开一门《Vibe Coding》。Vibe Coding氛围编程是一种新型的编程范式由 OpenAI 联合创始人 Andrej Karpathy 提出。它利用大型语言模型 (LLM)让开发者只需用自然语言描述想要的功能AI 就会自动生成相应的代码。与其手敲每一行代码不如通过精妙的 Prompt 去“指挥” AI 成为你的最强打字机。走向未来我们身处的时代时代的奠基人从来不是偶然的Google 创立不是偶然的Facebook 创立不是偶然的OpenAI 破局也不是偶然的中国的 DeepSeek 和 Qwen (千问) 同样不是偶然的。The Bitter Lesson (苦涩的教训)“The actual contents of minds are tremendously, irredeemably complex; we should stop trying to find simple ways to think about the contents of minds… instead we should build in only the meta-methods that can find and capture this arbitrary complexity.”人类心智的实际内容是极其复杂且无法简化的我们应该停止寻找简单的方法来思考心智的内容……相反我们只应该构建能够发现并捕获这种任意复杂性的元方法——即利用算力去暴力搜索和学习。—— The Bitter Lesson人类即将面临的 Paradigm Shift (范式转变): “Heuristics is dead, Policy is Heuristics, LLM is Policy, Mechanism is King.”拍脑袋的启发式算法已死机制才是王道。写在 A.C. (Anno. ChatGPT) 4 年我们有了极其强悍的推理模型o1$ \rightarrow $o3-mini$ \rightarrow $deepseek-r1用 Token sequence 来模拟人类的慢思考System II是完全可行的。单纯的 AI 本身只是一个 Finite State Machine有限状态机但当给它配上“纸和笔”上下文窗口和外部工具调用以后它就变成了无所不能的 Turing Machine图灵机。怎么在时代里找到自己的位置人类还有未来吗你们还有未来你们是建设者和接班人你们更是这个 AI 奇点时代的见证者。你拼命内卷难道只是为了一张保研/大厂/公务员的船票师兄可能会用前人的经验告诉你绩点很重要科研很重要获奖很重要……所谓的潜规则是“只要比其他人不菜一点就能赢得这个内卷游戏”。但这些其实都不应该重要你是“诚朴雄伟”的南大人不该是服从性考试的奴隶更不该甘心沦为庞大草台班子里的一个无聊齿轮这个世界的真英雄比尔·盖茨“A computer on every desk and in every home, running Microsoft software.” (让每一个家庭、每一张桌子上都有一台运行微软软件的电脑。—— 这曾是 Altair BASIC 诞生 20 年前无比疯狂的梦想)Linus Torvalds (Linux Git 之父): “Nobody actually creates perfect code the first time around, except me. But there’s only one of me.” (没人能一次性写出完美的代码除了我。但这个世界上只有一个我。)(注哪怕是天才如 Linus也曾在非技术性的硬件项目 Transmeta 上摔过跟头但这并不妨碍他用代码改变了全世界。)推荐阅读谁谋杀了我们的游戏 以及 谁谋杀了我们的大学是什么让我们为一件事义无反顾“Remember brick walls let us show our dedication. They are there to separate us from the people who don’t really want to achieve their childhood dreams.”记住那些阻挡我们的砖墙是为了让我们证明自己到底有多么渴望。砖墙的存在是为了把那些并不是真心想要实现童年梦想的人挡在门外。—— Randy Pausch’s last lecture (兰迪教授的最后一课)The Takeaway Message时代会进步没什么是颠覆不了的。无论是传统的操作系统课还是老旧的本科教学体系甚至是计算机世界中的一切常识在 AI 的冲击下都面临着重构。忘掉负担去追寻你们的梦想你们是建设者。你们也是接班人。最终总结Take-away messages:祝贺你完成了这门极其硬核的《操作系统》课程从底层的逻辑门、状态机一路杀到并发死锁的深渊与文件系统的高塔这绝不是一段轻松的旅程。正如这节课最后所说时代会颠覆一切但底层“Everything is a state machine”的系统思维是永恒的。在未来无论你是去优化打磨像 RainCppAI 这样属于你自己的 C 开源引擎架构还是在大厂庞大复杂的后端微服务中排查那些若隐若现的死锁与性能瓶颈这门课里积累的“软硬协同”视角与破局能力一定会成为你最锋利的武器。祝愿你能摆脱为了绩点与面试八股文而焦虑的内耗重新找到并义无反顾地去追求自己的极客梦想。在任何你热爱的领域里用你的方式去做“惊为天人”的东西去推动这个世界的哪怕一丝进步。我们的征途是星辰和大海。因此对自己要求高一点。
返回列表