第1页共17页编号:时间:2021年x月x日书山有路勤为径,学海无涯苦作舟页码:第1页共17页简析linux内核的执行流程----从bootsect
s到main
c(内核版本0
11)Linux启动的第一阶段(从开机到main
c)3个任务:A、启动BIOS,准备实模式下的中断向量表和中断服务程序
B、从启动盘加载操作系统程序到内存
C、为执行32的main函数做过渡准备
内存变化如下:①、0xFE000到0xFFFFF是BIOS启动块,其中上电后第一条指令在0xFFFF0
②、而后0x00000到0x003FF总共1KB存放中断向量表,而接下去的地址到0x004FF共256B存放BIOS数据,从0x0E05B开始的约8KB的内存中存放中断服务程序
③、利用BIOS中断0x19h把硬盘的第一扇区bootsect
s的代码加载到内存中,即0x07c00处,后转到该处执行
④、将bootsect
s的代码复制到0x90000处
⑤、利用中断0x13h将setup
s程序加载到内存0x90200处
⑥、再将剩余的约240个扇区的内容加载到0x10000~0x2EFFF处
⑦、开始转到setup
s处执行,第一件事就利用BIOS提供的中断服务程序从设备上获取内核运行的所需系统数据并存在0x90000第2页共17页第1页共17页编号:时间:2021年x月x日书山有路勤为径,学海无涯苦作舟页码:第2页共17页的地址处,这时将原来bootsect
s的代码覆盖得只剩2Byte的空间
⑧、关中断并将系统代码复制到0x00000处,将原来放在这里的中断向量表与BIOS数据区覆盖掉,地址范围是0x00000~0x1EFFF
同时制作两表与两寄存器
⑨开地址线A20,寻址空间达到4GB,后对8259重新编程,改变中断号
⑩、转到head
s(大小是25K+184B)执行,执行该程序完后是这样的