您的位置:首页 > 其它

PC启动过程

2011-11-18 21:38 218 查看
PC启动时,首先会在实模式下运行BIOS,启动后的第一条指令在内存0x000FFFF0处,因为BIOS在内存中的上限是0x00100000,于是在0x000FFFF0处执行的第一条指令必然要跳到BIOS的指令位置开始执行,保证BIOS在刚启动的时候得到控制权。BIOS得到控制权后会对系统进行一系列的初始化。

BIOS初始化完成后,会将一个称作Boot Loader的程序从硬盘读到内存中并把控制权交给该程序,到这里BIOS的任务就算完成了。

Boot Loader程序会在编译成可执行代码后放在硬盘的第一个扇区。硬盘被分割成一个个大小为512字节的扇区,扇区是硬盘最小的读写单位,即每次对硬盘读写操作只能够对一个或者多个扇区进行并且操作地址必须是512字节对齐的。如果说操作系统是从硬盘启动的话,硬盘的第一个扇区就被称作“启动扇区”,因为Boot Loader的可执行程序就在这个扇区。当BIOS找到启动硬盘后,便将512字节的启动扇区的内容装载到物理内存的0x7c00到0x7dff的位置,紧接着再执行一个跳转指令将CS设置为0x0000,IP设置为0x7c00,这样便将控制权交给了Boot
Loader程序。

关于Boot Loader程序:Boot Loader的源程序是由一个叫做boot.S的汇编程序和一个main.c的C程序组成。boot.S主要是将处理器从实模式转换到32位的保护模式(保护模式中我们才能够访问到物理内存高于1MB的空间)。main.c的主要作用是将内核的可执行代码从硬盘镜像中读入到内存中,具体的方式是运用x86专门的I/O指令。
内容来自用户分享和网络整理,不保证内容的准确性,如有侵权内容,可联系管理员处理 点击这里给我发消息
标签: