红联Linux门户
Linux帮助

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

发布时间:2014-12-03 21:53:24来源:linux网站作者:leeson50222

这一段时间分三步完成

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和操作系统“两头约定,定位识别”惯例,有兴趣读者自查,俺不赘述。)

(2)加载setup代码。

(3)加载system代码。


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

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