最早国产的操作系统课基本是原理课,很少有上手做点东西的机会,当年学完还是很遗憾的。后来国内的课程发展很快,比如清华大学和哈工大的课都有设计比较好的实验,但是他们的课都有莫名其妙的门槛,比如学堂在线的实验环境引导已经实质上失效了(是mooc课程没有即时更新,其实文档和配套代码都很全),网易云课堂没有self paced模式,只能等下一次开课。
还好顺藤摸瓜找到了MIT操作系统课6.S081的页面,发现了宝藏。最新的2020年教学录像、课件、lab代码一应俱全,甚至还有自助判分工具。
做了一下lab1 util,难度适中,上手比较轻松。那本xv6的手册写的极其精练,一下子理清了很多以前模糊的概念。宝藏课程宝藏课程。
MIT lab的引导写的非常详尽,一步一步照着做就行。不过有几道题的细节还是有点麻烦。比如用CSP(就是Golang用的并发模型,你赚到了!)来写的primes,如果不注意在主进程和子进程把没用到pipe的读、写fd关闭,你先遇到的并不是xv6的fd数量限制,而是子进程读取pipe时会阻塞,因为写的那端没关闭,数据已经读完了但会一直在等,程序就不往下跑了。xargs也有个小细节,就是执行exec调用,argv数组要以命令本身开始,用0结束(也就是NULL),see example。
总之真的是比较愉快的体验。这个时代资源随手可得,现在的孩子太幸福了。