操作系统没那么难,你也能从零开发一个五脏俱全的操作系统
说起操作系统,大家都觉得是一个庞大的工程,超级复杂,可望而不可即。现在我们有一个大胆的想法,一个人能不能从第一行代码码起,开发一个五脏俱全的操作系统呢?答案是肯定的,而且这个操作系统具体商用操作系统的所有主要功能(当然达不到商业操作系统的全部功能了)。
我们知道商业操作系统或者开源的Linux操作系统多的千万行甚至亿行代码,规模之大,让人无法想象。微软Windows开发团队多达几千人,而Linux内核参与的开发人员也在千级别。我们当然不是要开发一个这么大规模的操作系统,我们的目标是开发一个具备多进程及调度、内存管理、文件系统和中断管理等功能的操作系统。这个已经具备操作系统的核心功能了。
其实有很多种方法可以完成上述任务,而且这些方法是实操类的,只要按照操作,就可以开发出一个微型操作系统。另外需要说明的一点是,这些方法与Linux内核讲解类的是不同的。后者只能让你理解Linux内核的实现,而本文介绍的方法则可以让你从头开发一个文件系统。下面我们在这一一道来。
操作系统-真象还原
这本书的名字很贴切,操作系统真的是一头大象,如果不能看到全貌,就会有盲人摸象的感觉。本书以此名为切入点,带领我们从不同的角度理解操作系统的每个方面,每个细节。
图1图书封面
本书开发的每一部分都可以在bochs虚拟机上面运行。从最简单的十几行代码开始,一直到几千行代码的完整操作系统,每个实例都可以编译运行在bochs虚拟机。最终,本书实现了一个简单但完整的操作系统,实现的内容包括:MBR,loader,内存管理,中断管理,文件管理,系统调用,多进程切换(内核以及用户态)等内容。
客观的说,本书完全从实践出发,基本上可以说是手把手,把代码一行行列出来,讲解得清清楚楚。本书另外一个特点是本书配套所有代码都可以找到,因此我们可以安装作者的思路进行编译和练习。
Xv6操作系统
Xv6是由麻省理工学院(MIT)为操作系统工程的课程开发的一个教学目的的操作系统。Xv6是在x86处理器上用ANSI标准C重新实现的Unix第六版(Unix V6,通常直接被称为V6)。该操作系统不仅仅有源代码,而且有配套的电子书和教学视频。如下是电子书的目录,具体内容电子书可以私信本号获得。
图2 Xv6内容目录
30天自制操作系统
本书是日本作者川合秀实的大作,该书最大的特点不仅仅开发一个操作系统,而且还有图形界面。日本人的认真和严谨想必大家都听说过。读过该书以后,你真的会体会到日本人做事的严谨。本书同样有配套的源代码,读者可以一边读书,一边实践。按作者的话,30天真的可以开发出一个图形化的操作系统。
图3 30天自制操作系统
下面本书中的一个具体的实例,可以看到一个非常初级的窗体。
图4 图形界面操作系统
清华大学操作系统课程
这个是学习操作系统的压箱底宝物。清华大学陈渝教授有一套操作系统的课程,并且开发了一个类似Xv6的操作系统(uCore),源代码可以在github下载。这个操作系统的配套资料非常全,不仅仅有源代码和配套的电子书,而且有免费的视频教程。
图5 操作系统实验指导
私信本号可以获得上述内容的部分电子书和源代码链接等信息。
私信内容: 操作系统