hurlex 一个基于x86架构的简单内核实现
博客很久都没有更斯了,因为一直在忙于一个小项目的开发。
事情的起因是这样的:因为今年开设了操作系统课程,但是纯粹的理论学习始终给我一种漂浮在云中的感觉。为了能在实践中深刻理解操作系统的运行机制和x86CPU以及硬件原理,我决定自己动手写一个操作系统内核的Demo程序。
当然,一开始没有相关的基础自然要找资料去学习。在翻阅了于渊的《Orange’s 一个操作系统的实现》和川合秀实先生的《30天自制操作系统》后感觉这两本书都不是很适合初学者学习。前者体系略乱且在一开始就陷入了硬件机制的漩涡,容易让初学者找不到北;后者不需要初学者有足够的基础,但是在硬件机制等内容上过于简略。只适合一般的爱好者去使用,而作为计算机专业的同学只能作为参考。(肆意诋毁大神作品,罪过罪过……)
后来在Google上搜索到了《JamesM’s kernel development tutorials》这篇文档后,我立即被作者合理有序的安排所吸引。我理想中的教程就是这样的,应该一步一步逐渐搭建起整个系统原型,由“发现问题——寻找机制——建立策略”的流程来处理。而不是一股脑的告诉我们所有的硬件机制,然后才是一般性的实现策略。
我主张的学习方法就是先学习一个新事物的基础框架和基本的模式结构,而旁枝末节的细节问题完全可以交给实践去慢慢掌握。暂时用不到的东西就不要告诉读者,完全可以用到了再慢慢补充。同时以任务和实践的方式驱动学习过程,既提升了理论学习的速度,又充满了实践的乐趣和成就感。
不过我在实践的过程中逐渐发现了这篇教程还是过于简陋,很多地方知其然而不知其所以然,并且部分的代码存在BUG。虽然代码能在当前的测试中通过,但会导致复杂化后其它的模块出现问题。另外这里调试也存在问题,若是能实现内核代码级别的调试功能就能极大的方便学习和开发。


