gleery os kernel
关于gleery kernel 的介绍似乎早就应该开始了。 gleery是一个非常tiny的os kernel,其实就它目前的功能来说只是一个bootstrap plus版。虽然功能很简单,但是学到的东西还是非常多的,而且最困难的部分也已经被跨越了。
gleery os kernel主要是大四上完成的,实现一个自己的os kernel总是一件很让人感兴趣的事情。我首先从阅读《自己动手写操作系统》一书开始,作为内核领域内的新手,这样的一本入门级的指导书可以省去很多盲 目的尝试。操作系统内核的编写在一开始的时候其实是面向机器的编程,需要了解很多Intel处理器的相关知识和汇编指令的工作方式。我觉得这是最困难的部 分,一旦克服了这一关,后面的工作就是纯粹的软件设计和实现的工作了。在编写的过程中我参考了很多资料,包括minix源代码,linux早前版本的源代 码,以及Intel处理器的手册和一些其他资料。
我执意要在Windows上开发这个os,所以也遇到了很多障碍。之前就花了很多时间去弄清楚怎么将gcc编译的obj文件和nasmw编译的o文 件链接到一起,并且声称没有PE头或ELF头的二进制程序。这方面的资料很少,因为大多数人都是在linux上做开发。不过在windows上的开发也给 我带来很大的便利,比如我用source insight建立工程极大的方便了代码的编写和阅读。
下面介绍一下我在开发中使用的开发环境和工具:
source insight:编辑器,以及minix代码的阅读器,同时提供了一键编译和一键调试功能。
一键编译主要是设置source insight 调用make.exe实现了,主要的流程在makefile文件里面控制。
一键调试则是调用bochs的程序,设置启动参数实现的。
有了这两个功能,开发过程就变得非常舒适了,代码的修改和调试可以马上看到结果。在此之前我需要在命令行里面编译代码,然后手动运行bochs,如果需要频繁的改动然后查看结果,效率会非常低。
编译器: dev C++ 中自带的mingw, 以及nasmw。
自定义的工具:自己用C写了一些工具用来生成最后的软盘镜像。
这次决定发布的版本只是一个demo版,仅仅演示了时钟和键盘中断的效果,以及一个IDLE进程。以后会发布一个更加完善的版本。
你可以从http://code.google.com/p/gleery/上check out到源代码