为啥南京大学蒋炎岩老师的操作系统课那么难?
发布时间:
2023-08-25 12:31
阅读量:
31
他上课用的东西概括起来,基本就是linux下的c语言开发工具链:gdb make vscode vim git shell 还有个qemu来模拟硬件环境什么的。这些东西我可以说,除了qemu,正经的底层软件开发或者linux c开发基本都是要用到的。他只不过是让你用目前实际工作中最可能用到的工具来教你的。
按他的话说,这门课的其中一个目的是教会你一种能力,即在软件层面别人能做出来的,你查了查手册或者什么spec后也能做出来,还专门安排了一个lab要求看完37页的 fat32 spec来实现对fat32格式的fs进行图片恢复。另外就是让你理解运行在硬件上的系统内核和运行在内核上的软件到底是什么。
至于每节课知识面都很杂,我感觉这才是前沿课程老师该讲的,给每一个os中的知识点拓展方向,说出相关的甚至目前正在研究的方向,如果你对相关领域感兴趣还能一步到位查看他列出来的相关文章。比如我记得他列出来的一篇相关论文,就是用高级编程语言去重写kernel有什么好处,项目是go写的,通过带的gc避免内存泄露的漏洞,但是性能比纯c差一点。
他课上也推荐前置书是csapp,教科书是ostep,每个lecture最后还都会列出来看哪个相关ostep章节。看完比较容易跟上进度,况且这课在他们学校面向的也是好班,和普通班教的不一样。
我花了四个月把他的课看完了,除了实现进程那个lab我是真没做(懒了)以外还把其他的lab都做了。我个人认为对自己实力提升非常大,虽然我写的信号量还是会死锁。或许下回我开二周目时候会把这些再写一遍,bug就全消失了。
END