写个操作系统?好吧,我承认现在的我实在是太无知太自大了。最近看了点东西,我越发感觉OS的复杂。
卡在OS进程那好长时间,到现在还是一知半解,搞了本《Linux内核完全注释》做参考,结果到了进程又卡住了。中途为彻底搞清楚分页机制,上网东看西看(正所谓不能在一本书上卡死),顺带摸索了下内存管理。单单看memory.c和page.s,代码都好理解,但从整个kernel角度放眼一看,真是一叶障目难见泰山,都不知道这些代码是在os运行中哪个具体环节用到的。再想想linus,大二就能写个os kernel,要现在的学生摸清整个os运行环节就够呛的。何况操作系统这门课,在一般大学也就是只教个概念和内部名词。
说到高校教授操作系统这门课,我这几天有个偶遇。正在理解sleep_on函数时,我上网找点分析文章,看到一学姐分析的很是透彻,再看看她所在论坛,原来是哈工大计算机科学与技术学院课程管理系统上的学生发言,顺着这个http://cms.hit.edu.cn/,在里面一顿“乱搜”,我-0-了:哈工大教的os课程,竟然拿Linux kernel代码为基础。在课程管理系统上转转,发现教授们把课件和相关资料都放在上面,二话没说,我就一个劲的DOWNLOAD,好在学校网速快,然后都传到GMAIL备份。看着李治军(不认识......)的操作系统ppt,感觉这个老师好用心,更关键的是每个os概念讲解都对应着linux代码,给人清晰简洁之感。而且我很欣赏他们教这门课的理念,抄点下来:
1 描述操作系统做什么比是什么更有意义
2 操作系统就是操作系统,操作系统没必要定义
3 “Learn OS concepts by coding them!”(斯坦福 os课)
4 强调实践! 这是本课程的根本要义!!
5 纸上得来终决浅 绝知此事要躬行
再说说现在的os书,一片片的,涉及概念讲的都差不多,但少有用源码分析的,给个伪代码就不容易了。但是呢,这种书又应该存在,不要多,搞一本随时参考,让code和concept相融合,这样才能搞懂os。