为什么BIOS要启用保护模式?

为什么BIOS要启用保护模式?

我正在做 mit6.828 实验,我很好奇为什么 BIOS 会启用保护模式然后禁用它(因为引导加载程序应该在实模式下启动)?

答案1

在 UEFI 时代之前,许多 BIOS 芯片甚至高达 8-16MB

随着代码中添加新功能,BIOS 的大小以及 ROM、EEPROM 或其他可存储 BIOS 的介质的容量也随之增加;现在 BIOS 版本的大小最大可达 32 兆字节。

https://en.wikipedia.org/wiki/BIOS#Hardware

这是因为如今的 BIOS 非常庞大,具有许多复杂的功能,如 USB 支持、网络启动、CD 和 DVD 启动、BIOS 故障后的自动恢复(例如双 BIOS 系统)... 一些针对超频者的高端 BIOS 有另一种方法来恢复 BIOS,即使两个 BIOS 芯片都发生故障,这可能需要另一个芯片和 FAT 文件系统支持

在 90 年代,我看到许多 BIOS 设置程序(可能是 American Megatrends)支持多种语言,包括日语和中文,因此它们还必须将字体表存储在某个地方。这需要大量的地址空间。一些现代 BIOS 甚至包含相当广泛的图形(尽管不如 UEFI 的那么令人印象深刻),而且不可能仅使用几百 KB 的 RAM 在实模式下运行它们

因此,大多数后期的 BIOS 需要切换到保护模式,以便拥有更多的地址空间。请参阅如今的BIOS怎么能大于64KB呢?

您还可以查看一些开源启动固件,例如西门子BIOS或者自由启动查看

答案2

目前大多数 BIOS 都是基于 UEFI 的。而 UEFI BIOS 在当前平台上相当庞大 - 这些是复杂的硬件,需要大量初始化(即使最基本的 CPU 和内存启动也并非易事)。因此,代码超出了实模式可以(轻松)处理的范围。

当平台配置为使用 CSM 并以传统 BIOS 模式启动时 - 它别无选择,只能切换到实模式,然后再将控制权传递给传统选项 rom(但请注意,根据选项 rom 的 PCI 规范,CPU 处于所谓的“大”实模式)或传统引导加载程序。

如果您停留在 UEFI 启动模式 - 则不需要进行由另一个 UEFI 二进制文件执行的启动这样的切换。

相关内容