为啥南京大学蒋炎岩老师的操作系统课那么难?

压根听不懂,太天马行空了,不知道在干啥
关注者
2,287
被浏览
1,458,047

99 个回答

你可能都不知道在学习操作系统课程的时候遇到这样一位老师是多么的幸运。

他上课会B站直播,也会OBS录屏直播并上传到B站,视频中会将屏幕贴在投影仪对应的位置。

他上课真的自己在用linux,真的手敲命令执行,常用命令+管道信手拈来。

他shell用的是fish,编程用的是vscode,vim流畅的飞起,gdb用起来一点也不含糊,ppt 做的也是相当有趣(经评论补充是reveal.js+pandoc+markdown)

他有一个scripts/askgpt 用于命令行提问chatgpt,已经用在了教学课堂上

他会开直播回答问题,弹幕姬是一个终端命令行的程序

他有一个个人网站,而且会把ppt讲义公开传上去

以这期视频为例 Linux 世界中的应用程序 (从零开始构建 “最小” Linux) [南京大学2023操作系统-P16] (蒋炎岩),这节课程的备课内容包括:一个可以在qemu中跑的minix操作系统,linus和 Andrew有关linux和微内核宏内核的讨论帖子原文,linux 版本增速曲线,init | initrd | initramfs | systemd | pivot_root 的概念,qemu+linux+initramfs(busybox)+vscode+gdb 现场执行。很羡慕一位35岁的老师还能有如此的技术热情和追求,不是干巴巴的泛操作系统概念,而是跑真linux演示。

当然,我也理解你问的这个问题“压根听不懂,太天马行空了,不知道在干啥”的感觉,可能你对操作系统不感兴趣,可能你因为前置知识不足导致没办法跟上老师的节奏,亦或者你忙着卷保研卷科研加分无暇顾及这门课等等。

但我看他的视频的感受就是一个大开眼界,当你了解了一些东西之后再回过来看,你会发现竟然有老师能在本科阶段就将操作系统原理讲的如此深入,走在教学一线但完全没有脱轨,持续跟进现代社会技术和生产力,是一个真的看过linux源码真的用linux的操作系统讲师,这太难得了。对你来说天马行空的东西对认知更广的高年级学生或者重学的人来说是一种融会贯通,开阔眼界的感觉。既能讲清楚原理,又能将抽象的理论用几个demo展示出来,还能将互联网深处的一些好文章老故事挖掘出来是多么宝贵的能力。

操作系统属于计算机技术智慧的精华,但深入进去又太复杂了,从启动到内存管理文件系统进程调度驱动模块每一个都太复杂了,光讲概念都要好多时间,就算概念理解了真的落实到linux的代码实现又是一番新的天地。他的视频我基本上是二倍速看完的,全程没有废话还会扩展一些现代操作系统中为什么的知识点,比如这期视频就提到了为什么WSL1放弃了做linux的系统调用兼容,linux2.6.0这一个重大变革的时间点发生了什么事,可以说是深入浅出了。

或许以后的某一天你因为一个并行的bug困扰,因为一个锁的问题折磨了两三天到处查资料终于弄了个一知半解,你突然发现居然有一个老师可以如此清晰准确的用几十分钟将事情的来龙去脉讲清楚,但凡听过的学生对这门课的可以说是有口皆碑,这不是没有道理的。

但操作系统这门课由于其性质的原因,和开在大二的CSAPP,大三的编译原理类似,第一次学受限于眼界和时间压力学业压力,感到困难和吃力是很正常的,而且jyy老师一节课的内容含量很满确实有点吃不消,对于初学者来说我相信是颇具压力的,我建议你先囫囵吞枣咽下去,等你再过一段时间触及到操作系统的魅力的时候,或许你还会把所有的视频翻出来重新看一遍,是真的讲的很好。

泻药

先对jyy老师的课做一下评价

  • 基本上是世界级的操作系统课程了,可以与CMU,MIT等名校的课程媲美了,甚至更胜一筹,主要是因为ppt做的非常风趣幽默,比如在讲虚拟内存的时候,说是os给进程带上了vr眼镜,配上当时著名的成电vr哥的图片 ,再比如在讲到 金丝雀 的时候,会在ppt上写道 本课程中,没有一只动物收到伤害
  • 有讲义,有视频,有可以实践的lab
  • 课程与时俱进,比如在往年的版本中,没有用到gpt,之前推崇查看man,但是第二年,又感同深受的推荐了tldr
  • 课程有一定的扩展性,比如讲存储的时候,会给你推荐CMU15445
  • 课程会提及最新的工业级os特性,比如会讲到microkernel架构的sel4,linux中lock ordering的应用
  • 课程深入浅出,旁征博引,又不失准确性
  • jyy老师本身基本没有被 知识诅咒,比如在讲elf的时候,他能够感同深受的说,这些程序头,我的头,你们一开始看肯定会觉得很复杂。。。
  • 能够对国内的os作出中肯的评价,比如,OpenHarmony中用到了Lockdep ,华为的工程师水平还是很不错的
  • 不仅授业,更是传道,在课程最后灌的鸡汤,确实不错
  • 。。。

再来说说为什么你觉得难

  • 你的前置知识不够,比如你不懂linux工具的使用,比如vim,shell,tldr等
  • 你的投入不够,这是一门严肃 的课程,连南大的学生都需要投入大量精力,你的投入需要只多不少
  • 你和课程的联系不多,因为你是通过视频看课程,并且lab没有测试,而南大的学生们有助教,有老师答疑
  • 你的动力不足,因为这不是你分内之事,你可能抱有这样的想法:“听说这门课又有趣,教的又好,我来试试看”,但是试过之后,感觉不能以“兼职”的方式去完成它,并且你又可以不去完成它,反正期末考os的时候,做做往年题就好了
  • jyy老师的os课程确实难
  • 。。。

我斗胆给你一些建议

  • 去看基础课程,比如nand2teris,以及它的课程,希伯来大学的那个,看csapp,看《编码》,完成nemu的PA实验,更多可以参见csdiy.wiki
  • 如果你想要学好os,加强投入,寻找志同道合的伙伴一起学
  • 厚着脸皮去找jyy老师蹭测试
  • 。。。

希望你能变得更强捏 ,希望你能获得勇气哟,共勉!!!