OS
计算机操作系统(H)课程评价
计算机操作系统(H)课程评价
计算机操作系统(H)课程评价
作者:GB
课程:CS334 · 张殷乾 · 2024秋
发布于:2025-01-19 13:57:47
更新于:2026-11-06 12:43:14
来源:NCES 原文
时隔两年,重新思考操作系统课程给我的收获。
临近毕业的时候和朋友做过一个小统计,大家觉得哪几门课对自己影响最大。主要的讨论集中在OS、线代、计组、计网、软工、cpp,其中OS是大部分人的交集。时间过了有点久,我对上OS的很多疼痛都已忘记,留下的可能就“quiz挺难的”、“一层又一层抽象”、“与硬件共舞”这些细碎的想法,以及一堆TTBR、Linux DRM里的抽象概念。最后在工作和研究里直接用到他们的时候不多,用到了也可以随时查手册查AI。更大的意义是学习了相近的idea,因为在工作里总会碰到OS里进程调度、内存分配等想法,碰到操作系统这门课背后的东西。
在统计的这些朋友样本里,我们大部分在毕业后并不会从事OS的研发,最接近的可能是去做AI Infra、K8s这些工作。那对于我们来说,OS课里做的那些 kernel hacking、理清system complexity 这些工作的意义是什么?我的第一个感触是OS让学生有了对大型工程“动刀子”的能力。在公司里面对一个上百万行代码的工程时,修改代码需要把握主线一步步做核心逻辑分析。而OS是我们能够在本科课程里接触到能握住完整边界的最好的大型系统。比起其他课的build sth from scratch,面对一个成熟的框架或代码库大工程能快速上手和改写非常重要。哪怕今天agent到来,当我们在去让agent修改代码的时候,对代码结构有清晰的分层和理解依旧相当重要,这样agent才能产生成熟健壮的代码,否则我们将永远会无穷下手,或者全部从零交给agent管理。虽然说LLM会让管理和改动代码变得越来越容易,但是理解好AI代码能节省很多在重构和debug里消耗的“昂贵”的token。
从技术上说,OS里提到的很多的概念或多或少用在了更多更广泛的系统上,内存的管理、任务调度、抽象、并发的管理,这些在各个系统组件里都有所体现。哪些抽象是昂贵或者不值得的?没有完美正确的设计,但设计分有高低,一个好的OS抽象,就在于恰到好处的隐藏不必要的信息和展示必要的信息。在重新看一些老论文的时候,就能感受到很多模块设计和文章思考的出发点与取舍。这些取舍算是一种“taste”。
课上读经典paper的过程也是在思考以往设计、培养taste的过程。并且在这门课里我找到了一个很好的状态,就是能从这篇文章的hidden state和当时的情景去思考,比如作者在开始做research时的状态,文章中间的失败,可能的尝试。这些事情会因为不优雅或者不work而没有写在文章中,但是在代码里是可以看到的,这些都是很好的对做研究和工作的反思总结。单纯的个人思考不一定能完全发掘他们,去交流、看作者的讲解、读和复现博客是一个很棒的学习方法,就如同在OS里查handbook一样。
最后可能从AI时代来“怀念”这门课吧。之前有好些带着感伤的文章,比如shengyu的《我不得不把才华留在昨天》,文章里写到作者自己曾经引以为傲的技能比如Profiling和写底层算子,现在都让LLM取代大半了。Agent时代带来了很大的生产力进步,比起以前一坐两小时debug,现在只要在屏幕前待10分钟,LLM就可以解决以前费时费力解决的问题。从这个角度说,那些debug的疼痛似乎都被淘汰了。不过,在和AI交互的过程中,我还是认为有两个事情是人类必须保持的:深度思考的能力和探索的热情。与AI频繁的交互中,我的深度思考经常被AI窗口所打乱,人自身的思维链变得更简短,表达的信息密度更低,有时经常复盘一天就单纯只是和AI交互。至于探索,主要是AI剥夺了我在亲手写程序构思代码上的乐趣,我必须寻找工作里新的乐趣。这些都可能是未来的课程里要解决的问题。
我们或许会重新思考人与机器间的关系,如同最初设计OS时一样。
张老师讲课讲的非常好,真正意义上做到了深入浅出地讲明白操作系统。平时上课会有小quiz,基本上来源于课件,所以需要认真听讲,不过也有一些可以顺着常识去推理。作业比较简单,基本是要理解并阐述一个操作系统知识,比如进程切换怎么做的,段页内存管理是怎么翻译地址的。老师给我们有PPT课件,OSTEP 《三个简单片》对应的章节。三个简单片讲的非常非常好,把操作系统的XX需求的起源、solution、challenge讲的很完善,story telling如同奶奶讲的睡前故事,后边的参考文章也非常推荐读。张老师还会推荐一些OS的Paper,看完会让大家上课讲,我也非常喜欢这样,就像故事会(不是),所以上去讲了两次。
lab 老师和助教都非常非常好,很耐心地来回答我那些非常胡闹的问题,比如:操作系统为什么可以重启电脑,进程切换时TLB里的内容会怎么样,为什么perf可以看到程序的性能情况,如果我用gdb观察gdb会发生什么。我记得有一次作业是做进程切换,我们知道在进程切换里我们需要把寄存器的值存进Process Table中,但是我发现OSTEP里,进程切换还会将寄存器存储在Kernel stack中。我当时对此很不解。后来助教学长帮我找了x86的资料,在微信上给了我很长很长的解答,我当时特别特别感动,于是帮他也查了几百页的ARM手册,最后我们在lab上跟老师简单的分享我们的结果。
Project是做驱动开发,这个工作很好玩,需要我们去查手册并实现。我们做的是GPU驱动,位于Asterinas OS与Qemu两层之间。但是Qemu之前对接的都是Linux DRM框架,这个框架为了应对多样化的显示屏,规模非常大并且很复杂,因此我们做了一个更直接并且较简易的实现。很不幸的是,我们在测试阶段只在WSL成功了,在Linux Docker上都没有成功(具体原因可能是Docker对xhost的支持不是很好,网上也没有文档描述该现象)
最后可能是关于上这门课中碰到的一些资料:
中大的实验,他们也是用Rust教OS 中山大学 YatSenOS v2 操作系统实验教程 - YatSenOS v2 Tutorial
南大蒋岩炎老师的操作系统。讲得很好,适合有一定系统基础的朋友听。【[南京大学2024操作系统]】 https://www.bilibili.com/video/BV1Xm411f7CM/?share_source=copy_web&vd_source=72eac555730ba7e7a64f9fa1d7f2b2d4
Operating Systems: Three Easy Pieces 三片的中文版,如果你想速通这本书的话 Index of /~remzi/OSTEP/Chinese
我的进程切换作业答案:OS Assignment: Process - Haibin’s blog
作为一门必修课程,我能给的建议就是这些了。如果还有什么,那就请我以《三个简单片》作结:

If you need to cite this post
Haibin Lai. (November 11, 2026). “计算机操作系统(H)课程评价” [Blog post]. Retrieved from https://www.haibinlaiblog.top/posts/%E8%AE%A1%E7%AE%97%E6%9C%BA%E6%93%8D%E4%BD%9C%E7%B3%BB%E7%BB%9F-h-%E8%AF%BE%E7%A8%8B%E8%AF%84%E4%BB%B7/
@online{lai--h-,
title={计算机操作系统(H)课程评价},
author={Haibin Lai},
year={2026},
url={https://www.haibinlaiblog.top/posts/%E8%AE%A1%E7%AE%97%E6%9C%BA%E6%93%8D%E4%BD%9C%E7%B3%BB%E7%BB%9F-h-%E8%AF%BE%E7%A8%8B%E8%AF%84%E4%BB%B7/},
}
Haibin's blog
DISCUSSION
Comments
No imported comments yet. Start the conversation below.
Leave a comment with GitHub