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

2021-09-23  本文已影响0人  forsch

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

BIOS的启动原理

BIOS在内存中加载中断向量表和中断服务程序

ROM(Read Only Memory):只读存储器,ROM有一个特性,就是断电之后仍然能保存信息。

0x00100是256字节,0x00400就是4 * 256字节=1024字节=1KB,从0开始,所以1KB的高地址端是0x003FF。

INT(INTerrupt):中断,中途打断一件正在进行中的事。


加载OS内核程序并为保护模式做准备

加载第一部分内核代码--引导程序(bootsect)

中断向量表(Interrupt Vector Table):实模式中断机制的重要组成部分,记录所有中断号对应的中断服务程序的内存地址。
中断服务(Interrupt Service)程序:通过中断向量表的索引对中断进行响应服务的程序。

BIOS程序固化在主机板上的ROM中,是根据具体的主机板而不是根据操作系统设计的。

  • 理论上,计算机可以安装任何适合其安装的OS。每个OS设计者都可以设计出一套自己的OS启动方案,而OS和BIOS通过是由不同团队设计的,为能协同工作,必须建立OS与BIOS之间的协调机制。
    两头约定和定位识别:
  • 对OS而言,约定:OS必须把最开始执行的程序定位在启动扇区,其余程序可以依照OS的设计顺序加载在后续扇区中。
  • 对BIOS而言,约定:接到启动OS的命令,定位识别,只从启动扇区把代码加载到0x07C00(BOOTSEG)这个位置(Boot.c boot_disk)。至于这个扇区中是否是启动程序,是否是OS,则不闻不问、一视同仁。若不是启动代码,只会提示错误,其余是用户的责任,与BIOS无关。

《Linux内核设计的艺术第2版》学习笔记

上一篇下一篇

猜你喜欢

热点阅读