ucore历史
写一个教学OS的初衷是陈渝老师和向勇老师想参考MIT的xv6/JOS开发一个能够与OS课程教材相配套的OS实验环境。没有直接采用xv6/JOS的原因是当时(2008年)xv6没有完整的保护模式页机制和虚存管理机制,JOS不是传统的UNIX 单体内核架构,而是Exokerne内核架构,与当前OS教学的知识点有点远,在互联网上找了一圈,没有合适的。有人说为何不用Linux?其实Linux确实挺好的,只是对于首次学习OS原理的本科生要在短短一学期内搞懂Linux的部分实现细节,可能付出的代价会比较大,需要冒着挂掉其他课的风险。为此陈渝老师鼓励他带的硕士研究生王乃峥试试能否仿照xv6和linux自己鼓捣一个教学用的小OS,并用Ken Thompson和Linus在短短3个月分别开发了UNIX和Linux的故事来从精神上激励他。王乃崢同学看了xv6的代码,本着试试看的想法,就开始coding,并查看各种相关文档和资料,发现也只花了短短一个月不到的时间就完成了支持lab1实验的ucore OS;为此信心大增,以月为单位又接连完成了支持lab2~lab8的ucore OS,前后大约花了8个月(这8个月还顺便完成了减轻体重和找女朋友的重要工作)。做完此事后,王乃峥同学离毕业只有3个时间了。有了之前OS开发的底子,他在3个月的时间内,完成了Linux kernel相关的硕士课题,顺利毕业,开始了他的创业生涯。
在此之后,茅俊杰同学接手了ucore的进一步改进,在他直博期间长期担任操作系统课程的助教,他做的一些有意思包括,扩展ucore-plus(ucore加强版)支持用户态ucore的设计实现(课程大实验),移植到mips/openrisc等CPU上等。目前已经顺利毕业,开始了在产业界的工作。再后来,又有不少同学进行了尝试,比如最近(2017年)张蔚同学把ucore移植到了开源的RISC-V32 CPU上,并准备在2018年做助教辅导他的同班同学。
而向勇老师和陈渝老师鼓励和引导后续的学生继续着操作系统教学和科研的快乐之旅。目前发现ucore中有不少的bug(不过少于Linux的bug),陈渝老师准备带着学生再研究一些算法、方法和工具,能够在ucore运行前通过静态分析的方法发现其潜在的bug,而且希望能够在ucore漰溃后,找到引起bug的内核代码在哪里,并能分析出为何这个内核代码会导致ucore漰溃的因果链(如果有人感兴趣做这方面的尝试,欢迎直接电邮/电话陈渝老师!)。希望这样能够减轻大家学习OS实验的负担。