从开机加电到执行main函数之前的过程主要分成三个部分
1.硬件强制设置CS和IP的值,指向BIOS的入口地址,启动BIOS,准备是模式下的中断向量表和中断服务程序。
2.加载操作系统 内核程序并为其做保护模式做准备。第一批由BIOS中断 int 0x19(由bios执行)把第一扇区的bootsect加载到内存,bootsect借助BIOS提供的int 0x13中断向量(由bootsect执行)所指向的中断程序来完成将setup程序加载到内存中,system模块的加载和setup的加载基本相同,不过由于加载的程序比之前的大(4个扇区:240个扇区),需要更多的时间,所以在屏幕中显示loading system(纯汇编实现,比较复杂,read_it),最后确定好根设备号,为后续加载根文件系统做准备。接下载执行setup程序,利用中断服务从设备上提取内核运行所需要的机器数据。
3.开始向32位模式转变(实模式到保护模式),为main函数的调用做准备。关闭中断并将system移动到内存的起始位置0x00000,设置新的中断描述符表和全局描述符表