在上一篇文章中,我们完成了一个简单的主引导程序的编写及运行,但有限制的是:主引导程序不能超过512字节!然而操作系统的程序,明显不止512字节,为了突破这个限制,主引导可以采用如下改造策略:
1、完成最基本的初始化工作
2、从存储介质加载程序到内存中
3、将控制权交给新加载的程序执行
在这里,主引导程序主要做简单初始化、加载程序到内存,跳到加载的程序处执行即可,这些在512字节内是可以完成的。
如下是一个基本的思路图:
在上述的思路中,面临的问题是:如何加载存储介质的文件(可执行程序)到内存中?
为了解决这个问题,需要引入文件系统,文件系统就是存储介质上组织文件数据的方式,这里我们采用FAT12文件系统,原因简单易学。文件数据在FAT12文件系统的组织方式如下图:
FAT12的基本组织单位为:
1、字节(Byte) : 基本数据单位
2、扇区(Sector):磁盘中的最小数据单元
3、簇(Cluster):一个或多个扇区
所以最终的解决方案为:
1、使用FAT12文件系统对软盘(a.img)格式化,之后a.img软盘的文件数据组织方式就是FAT12格式
2、编写可执行程序(loader),并拷贝到软盘a.img中
3、主引导程序(boot)在软盘a.img中查找可执行程序loader
4、将loader程序拷贝到内存中,然后跳转(jmp)到入口处执行