感谢支持
我们一直在努力

Linux内核(v0.11)-从开机加电执行到main函数前

这一段时间分三步完成


1,启动BIOS,准备实模式下的中断向量表和中断服务程序。


2,加载操作系统到内存。用步骤1中准备的中断服务程序实现。


3,为执行main函数做过渡工作。


一,启动BIOS


靠硬件方法来启动BIOS,BIOS程序入口地址0xFFFF0。加电瞬间强行将CS的值置为0xFFFF,把IP的值强行置为0x0000,这样CS:IP就指向0xFFFF0这地址。


二,加载操作系统到内存分三步


(1)加载引导程序bootsect(bootsect程序主要是规划内存)。


给CPU一个0x19中断,CPU查向量表做出反应,加载第一扇区的512B的bootsect到内存0x07C00。


(这里涉及到BIOS和操作系统“两头约定,定位识别”惯例,有兴趣读者自查,俺不赘述。)


Linux内核(v0.11)-从开机加电执行到main函数前

(2)加载setup代码。


(3)加载system代码。


三,开始向32位模式转变,为main函数做准备。


此阶段主要工作是,打开32位寻址空间,打开保护模式,建立保护模式下的中断响应机制,建立内存分页机制等。

赞(0) 打赏
转载请注明出处:服务器评测 » Linux内核(v0.11)-从开机加电执行到main函数前
分享到: 更多 (0)

听说打赏我的人,都进福布斯排行榜啦!

支付宝扫一扫打赏

微信扫一扫打赏