《操作系统引导探究》链接:http://purec.binghua.com/Article/Class6/Class7/200411/81.htm
一、开机加电过程
图1. 电源开启,PC处理流程
二、引导扇区
图1中最后一个流程,BIOS检查磁盘的第一个扇区(512B)载入内存的0x0000:0x 7c 00处,如果这个扇区的最后两个字节是”55AA”,那么这就是一个引导扇区,同理这个磁盘就是一个引导盘,通常这个大小为512B的程序就称为引导程序。
特点:
1、 它的大小是且仅是512B;
2、 结尾两个字节必须为”55AA”,这是引导扇区的标志;
3、 放在磁盘的0磁头0磁道1扇区。
因为BIOS 一次只读一个扇区也即512 字节的数据到内存中,这显然是不够的,现在操
作系统都比较庞大,因此我们必须在引导扇区里将存在磁盘上的操作系统的核心部分读进内
存,然后再跳转到操作系统的核心部分去执行。
三、通过BIOS读磁盘扇区
不通过操作系统读磁盘,一般有两种方式:
1、直接读写磁盘的I/O端口;
2、通过BIOS中断实现(其建立在第一种方法的基础之上)。
3.1、BIOS的中断处理
图2. 中断处理过程
由上图我们可以看出,产生中断信号后,由中断地址形成部件形成中断向量,中断向量就是中断处理程序的入口地址。这样一块中断程序的入口地址形成了中断向量表,即内存中0x0000~0x03ff之间的这一块内存,找到中断向量之后,在这个中断向量中指出跳转到哪个位置去执行中断的处理。向量地址其实就是指向一个实际内存地址的指针,而这个实际内存地址中往往按排一条跳转指令(jmp)跳转到实际处理此中断的中断服务程序中去执行。中断的时候,一般以寄存器里的值作为中断的参数。