【问题标题】:what is the functionality of bios?bios的功能是什么?
【发布时间】:2016-06-07 18:25:04
【问题描述】:

我对引导加载程序有一些了解,但我必须知道 bios 代码如何跳转到引导加载程序,它何时初始化 I/O 设备以及 bios 的功能是什么?

bios 是否负责选择引导扇区?它将如何选择引导扇区?

另外请告诉我重置向量如何直接指向bios区域?

【问题讨论】:

标签: bootloader bios


【解决方案1】:

我对引导加载程序有所了解,但我必须知道 BIOS 代码如何跳转到引导加载程序

从硬盘引导时,BIOS 从硬盘第一个扇区的主引导记录中读取引导加载程序,并将其加载到内存中的 0000:7C00(或者可能是 07C0:0000 -- in real mode, these refer to the same address )。

什么时候初始化 I/O 设备,bios 有什么功能?

Minimal Intel Architecture Boot Loader 简要概述了 BIOS 在初始化系统时执行的基本功能。推荐的初始化顺序中的主要要点如下:

上电(复位向量)处理
模式选择
内存初始化准备
内存初始化
后内存初始化
其他平台启用
中断启用
处理器中断模式
中断向量表 (IVT)
中断描述符表 (IDT)
计时器
内存缓存控制
处理器发现和初始化
I/O 设备
PCI 设备发现
引导旧版操作系统
内存映射
非易失性 (NV) 存储

注意:Memory Map 和 Non-Volatile Storage 部分列在 Booting a Legacy OS 部分之后的大纲中,但作为如您所料,映射系统内存在移交给引导加载程序和引导操作系统之前发生。此外,在 BIOS 初始化期间也会发生对非易失性存储器的一些访问。 (例如,BIOS 可能会读取存储在 CMOS 中的设置以确定主引导设备)

bios 是否负责选择引导扇区?它将如何选择引导扇区?

BIOS 根据设备类型定位引导扇区。

在大多数情况下(CD/DVD 除外),引导扇区将是设备的 LBA 0(或等效的 CHS 0,0,1)——请参阅特定设备的规格以了解它使用的寻址模式.对于 CD/DVD,引导扇区为 LBA 17。

有关详细信息,请参阅 OSDev 上的the quoted article。

另外请告知我重置向量将如何直接指向 bios 区域?

CPU 就是这样设计的。置位复位信号后,CPU 将其寄存器(包括指令指针)设置为已知值。例如on most x86 systems,这是FFFFFFF0h,这个地址映射到BIOS ROM。 This answer 提供了更详尽的解释。

【讨论】:

  • 感谢@user1354557提供的宝贵信息,也请帮我访问中断向量表。
  • 您可以使用 SIDT/LIDT 指令获取/设置 IVT 的地址。默认情况下,它位于 0000:0000。您必须在构建 IVT 之前初始化内存。
  • 我不明白 SIDT/LIDT 指令是什么意思,你能给我一些解释吗??? @user1354557
  • 它们记录在 Intel 的指令集参考中; see here
猜你喜欢
  • 2014-08-30
  • 2023-04-03
  • 1970-01-01
  • 2019-05-18
  • 2018-05-20
  • 1970-01-01
  • 2017-05-19
  • 2018-05-02
  • 2020-05-10
相关资源
最近更新 更多