码迷,mamicode.com
首页 > 移动开发 > 详细

从BIOS到内核的过程分析

时间:2014-11-20 18:46:57      阅读:192      评论:0      收藏:0      [点我收藏+]

标签:内核   x86   bootloader   

在上一篇译文中说明了x86内存映射,在实时模式下,要做的工作还真不少,为了让操作系统放在内存开始运行起来时多么辛苦啊!下面将从整体上把握设计思想。

这里主要从内存分布的角度来看这些程序。

第一是BIOS,上电后cpu的IP指针指向BIOS内存区,开始执行BIOS程序。BIOS主要做的工作是

BIOS的中断向量在实时模式要保护号,里面有很多功能可以调用。BIOS会从盘中引导系统,如果找到

第一个扇区是0xaa55的盘,就把它加载到内存里,放在07c00h处。磁盘里面我们一般把bootloader

第一段的程序的可执行文件放在这里512B的空间,其功能是加载第二阶段的bootloader到内存中,这

里放在实时模式下的free memory里面的090100h。然后跳转执行第二阶段的bootloader程序。第二

阶段的bootloader现在可以开始真正的使命,就是加载磁盘里的内核镜像到内存里面,然后开启保护

模式。这里的内核放在了free memory区,地址设为08000h的地方。然后转入保护模式,把eip指向

内核区的代码。内核要做的就是在保护模式下工作了。

说了一大段,总结就是:

1,BIOS加载磁盘第一扇区代码到07c00h

2,第一扇区代码加载bootloader2到090100h

3,bootloader2加载kernel到08000h,并切换到保护模式

4,执行08000h的代码。。。。

整个过程都在实时模式的1M空间内惊醒,可以使用BIOS的中断例程。在第3过程后内核代码使用的寄存器,地址线什么的都要

放大到32位了,也就真正的进入线性区为4G的模式。其寻址模式不再是简单的CS:IP了,而是引入了段描述符进行寻址。

bubuko.com,布布扣

从BIOS到内核的过程分析

标签:内核   x86   bootloader   

原文地址:http://blog.csdn.net/eliot_shao/article/details/41316249

(0)
(0)
   
举报
评论 一句话评论(0
登录后才能评论!
© 2014 mamicode.com 版权所有  联系我们:gaon5@hotmail.com
迷上了代码!