从“一步一步写操作系统”到“一步一步抄操作系统”

来源:互联网 发布:如何查看路由器端口号 编辑:程序博客网 时间:2024/04/29 23:32

前段时间在阅读《一步一步写嵌入式操作系统》,按照书本的内容一步一步写操作系统。

不过在写的过程中比较纠结,因为《一步一步写嵌入式操作系统》一书提供了完整的样例代码,完全按照书中的内容一句一句敲代码视乎比较愚蠢,像小学的时候抄《小学生守则》一样。如果不敲代码,直接将网上下载的样例代码编译运行一遍又没有什么效果,不能深入理解其中原理。

于是产生了一步一步“抄”一个操作系统的想法,基本做法就是按照《一步一步写嵌入式操作系统》一书的内容自己建构汇编和c的代码文件,然后将样例代码中的代码一段一段拷贝进来,拷贝的时候务求理解每段代码的工作方式。这样既可以避免重复劳动,又可以避免走马观花。

其中总结的一个小技巧就是代码拷贝的粒度要把握好,最好以方法为单位粒度。同时方法的名称在拷贝时可以稍作修改,使其它部分的样例代码无法直接使用,必须根据新的方法名作代码修改才能使用。

通过这种方式,很快《一步一步写嵌入式操作系统》书中的样例就不够抄了,于是狠下心开始抄Linux 2.6的内核。基本做法类似,不过Linux更为复杂,需要考虑许多周边的因素,特别是Makefile和Kbuild。最后用了一种取巧的方法,就是通过Linux的make命令对Linux内核进行编译,编译过程中带v=1参数,将详细的编译命令保存在日志文件中供参考。同时编译运行正确后不运行make clean命令,充分利用make命令生成的中间文件。

目前已经完成启动到保护模式的分段编译,感觉效果比较好,比较深入地了解了Linux 2.6内核从启动到保护模式的运行过程。

建议希望深入学习Linux操作系统的同学们使用这种方式进行学习。

我分步编译的代码已经上传到github上了,链接是

https://github.com/DamonDeng/LinuxSBS

有兴趣的同学可以看看

以后有时间和大家分享具体细节。
原创粉丝点击