博客
关于我
强烈建议你试试无所不能的chatGPT,快点击我
PC机引导程序之——BOIS
阅读量:616 次
发布时间:2019-03-13

本文共 2683 字,大约阅读时间需要 8 分钟。

PC机引导程序之——BOIS

我们的个人pc机在启动的时候是有引导程序来启动我们的电脑的,PC机的引导程序是BOIS,跟Linux启动的时候需要bootstrap和uboot一样,因为我们设备上电如果只有内核跟文件系统是不能直接运行的,需要引导程序来引导。

BOIS初始化并测试系统硬件,然后从众多的储存设备中加载引导程序并初始化操作系统,BOIS为按键、屏幕、存储器和输入输出设备提供中断调用。
以前的PC机使用的BOIS是写在ROM中的,现在BOIS被存储在flash中,它可以重写并且不用把他从主机上拆下来,以便用户更灵活的写BOIS引导程序。

BOIS系统启动

最开始BOIS启动是在固定的物理位置启动,经过后来处理器的提升,现在BOIS启动直接是在ROM启动。

首先pc机启动,上电后会进行 POST(power-on self-test ) 上电自检,然后进行BOIS引导。

  • POST

    1.验证CPU寄存器
    2.验证BIOS代码本身的完整性
    3.验证一些基本组件,例如DMA,计时器,中断控制器
    4.初始化,调整和验证系统主内存
    5.初始化BIOS
    6.将控制权传递给其他专用扩展BIOS(如果已安装)
    7.识别,组织和选择可用于引导的设备
    在跟高级别的BOIS中POST也进行如下工作
    1.初始化芯片组
    2.发现,初始化和分类所有系统总线和设备
    3.提供用于系统配置的用户界面
    4.构建目标操作系统所需的任何系统环境

    当pc机重启BOIS会启用POST,CPU会尝试去执行第一个内存位置复位向量(reset vector),在冷启动时候被北桥会直接将代码(复位向量指向的代码BOIS)获取定位于系统的flash上,热启动情况下,BOIS定位到RAM上,然后北桥会将复位向量定位到RAM上(也就是说pc启动,冷启动的话BOIS引导程序会被北桥定位到flash上,用复位向量指向它,热启动的时候直接将BOIS放在RAM上,用复位向量指向它)

    • 复位向量

      复位向量是中央处理器将查找复位后将执行的第一条指令的默认位置,是一个指针或者地址,是CPU一开始就能执行的指令地址,这个地址是属于NVRAM,这是BOIS引导系统的第一步,不一样的处理器有不一样的地址,如 8086 处理器的物理地址是FFFF0h。

    • 北桥

      北桥(A northbridge or host bridge)是PC主板上核心逻辑芯片组结构中的两个芯片之一,另外一个是南桥,北桥直接连接CPU的前端总线FSB( front-side bus ),他负责一些高性能的任务,北桥,也称为内存控制器中枢,通常与南桥配对。在包含它们的系统中,这两个芯片管理CPU和主板其他部分之间的通信,并构成PC主板的核心逻辑芯片组。
      在较旧的基于Intel的PC上,如果北桥配备了集成的图像卡,则也称为外部存储控制器集线器(MCH)或图形和存储控制器集线器(GMCH)。这些功能越来越多地集成到CPU芯片本身中,首先是内存和图像控制器。2011年推出的Intel Sandy Bridge和AMD加速处理单元处理器,北桥的所有功能都位于CPU上。相应的南桥被Intel重命名为平台控制器中枢,被AMD重命名为融合控制器集线中枢。
      在这里插入图片描述

      • 前端总线
        前端总线(FSB)是一种计算机通信接口,用于在北桥、南桥、CPU、cache之间传送数据。
BOIS引导程序

在POST扫描完并检查完所有带有校验和的ROM之后,BOIS会立即调用 INT 19h去启动引导程序, POST自检查后,程序也会加载INT 91h去重启系统,但是必须小心禁止中断和其他可能干扰BIOS重新引导过程的异步硬件过程,否则系统在重新引导时可能会挂起或崩溃。

当INT 91h被调用,BOIS会企图在引导设备上找到引导程序,他加载和运行他发现的引导程序,以便控制PC。
BOIS是放在NVRAM(CMOS)中的,自检完成复位向量加载到内存中其地址就是MBR(master boot record)的地址,MBR内容是这些。1、引导程序 2、磁盘分区表 3、分隔标识,BIOS它会加载MBR的内容到内存地址0x7C00处,并跳转到此处开始执行,分区表则是标准化的,它是一个64字节的区块,包含4个16字节的记录项,描述磁盘是如何被分割的所以你可以在一个磁盘上安装多个操作系统或拥有多个独立的卷)。
然后MBR引导程序的作用是引导出GRUB,然后GRUB会对每个磁盘进行检测,以查看其是否可引导,如果扇区不能够被读取,进入下一个分区,如果读取成功,在接收扇区并考虑扇区可引导之前,会检查扇区的签名,一般是最后两个字节 0x55 0xAA。 找到可引导扇区后,BIOS会将控制权转移到已加载的扇区。BIOS不会解释引导扇区的内容,只会检查最后两个字节中的引导扇区签名。诸如分区表和BIOS参数块之类的数据结构的解释是由引导扇区本身中的引导程序或通过引导过程加载的其他程序完成的,扇区通常测试并初始化它所控制的硬件,并注册供后引导应用程序使用的中断向量,直到每个ROM被初始化完。
BOIS引导程序会先检测关键设备电路,如果设备异常则发出警报并死机。然后进行显卡检测,调用显卡BIOS的代码,初始化显卡,如果显卡不正常则黑屏(不正常不能显示,所以黑屏),正常则屏幕显示显卡信息,并返回系统BIOS接着进行检测其它设备是否正常。其它设备不正常则等待处理,正常则屏幕显示系统BIOS信息。接着检测CPU,如果出错则蓝屏死机。
在这里插入图片描述

  • 中断向量

    中断向量表是一个数据结构,其中包含中断处理程序和中断请求和中断向量,中断向量存在于中断向量表中,是中断服务程序的入口地址,系统程序必须维护一份中断向量表,每一个表项纪录一个中断处理程序地址,当外部事件或异常产生时,由硬件负责产生一个中断标记,CPU根据中断标记获得相应中断的中断向量号,然后由CPU根据中断向量表的地址和中断向量号去查找中断向量表获得相应中断号的中断程序地址,进一步执行对应的中断处理程序。

  • 中断处理程序

    中断处理程序(也称为中断服务程序或ISR)是与特定中断条件相关的特殊代码块。中断处理程序由硬件中断,软件中断指令或软件异常启动,实现设备驱动程序或受保护的操作模式(例如系统调用)之间的转换。

GRUB操作系统引导程序

我们前面讲到当BOIS自检完成,会通过复位向量运行MBR的引导程序,这个过程BIOS就会把系统的控制权给MBR,当MBR运行了过后引出GRUB引导程序,这个时候GRUB引导程序就正式登场了。

转载地址:http://njkaz.baihongyu.com/

你可能感兴趣的文章