1、BIOS程序执行
操作系统在加电启动的过程中首先执行BIOS程序。在CPU加电后,除CS外的其他寄存器值都会设为0,这样根据CS和IP的值就可以确定一个唯一的物理地址,这个地址空间存放一个JMP跳转指令,跳转到BIOS真正的启动代码处。
之后,BIOS 开始搜寻可引导的存储设备(即根据用户指定的引导顺序从软盘、硬盘或是可移动设备)。如果找到,则将存储设备中的引导扇区读入物理内存 0x7C00 处,并跳转到 0x7C00 继续执行,从而将 CPU 交给引导扇区中的 Boot 程序。
2、Boot程序执行
Boot程序执行的目的为将操作系统内核加载到内存中,在 Boot 程序执行的过程中,CPU 始终处于实模式状态。Boot 程序利用 BIOS 提供的 int 0x13 中断服 务程序读取软盘 FAT12 文件系统的根目录,在根目录中搜寻 loader.bin 文件。如果 Boot 程序找到了 loader.bin 文件,会继续利用 int 0x13 功能将整个 loader.bin 文件读入从地址 0x1000 起始的物理内存, 最后跳转到 0x1000 处开始执行 Loader 程序,Boot 程序的使命到此结束。Loader 程序的任务和 Boot 程序很相似,同样是将其它的程序加载到物理内存中。
3、操作系统程序执行
当操作系统内核程序被成功加载到内存中之后,操作系统程序就像普通的程序一样被开始一行行执行。初始化内核,之后提供给应用程序执行。