您的位置:首页 > 运维架构 > Linux

Read Linux Kernel Source Code 0.12

2014-02-25 10:55 288 查看
看完了第六章,了解了运行保护模式之前的过程.

首先,开机后CPU会自动运行在实模式下,然后会自动运行0xFFFF0地址处的ROM BIOS,这段程序会首先检测硬件的正确性,然后设置0x0的中断向量表,自动读取磁盘第一个扇区的内容加载到0x7C00处,然后跳转到0x7C00处运行。(代码就是boot\bootsect.s)

然后开始执行bootsect.s,首先他会把自己移动到0x90000处,然后把磁盘中紧接着的2K数据加载到0x90200处,而内核代码加载到0x10000处(小于0x80000,没影响),然后再确定根文件系统,跳转到0x90200处(setup.s).

执行setup.s代码,利用ROM BIOS的中断读取各个硬件参数,并把信息存储到0x90000处,覆盖原来的信息,并把内核代码移动到0x0处,然后加载描述表,设置中断控制硬件,设置CR0,并跳转到内核代码处,开始时head.s.

head.s的作用是初始化中断描述符表,检查A20地址线,测试协处理器,初始化内存管理,然后执行main.c函数,调到C语言处.
内容来自用户分享和网络整理,不保证内容的准确性,如有侵权内容,可联系管理员处理 点击这里给我发消息
标签: