启动 PC 并使其可用的部件

启动 PC 并使其可用的部件

从最基本到最抽象,PC 开机时使用的东西的顺序是什么?BIOS 是先加载的吗?我听说 BIOS 负责加载引导加载程序和固件。其中一个是否必然先于另一个发生?引导加载程序的工作是加载操作系统,为什么 BIOS 不自己做这件事?

基本上排名是这样的:

  • BIOS
  • 操作系统
  • 引导加载程序
  • 固件

编辑:据我了解,电源是按下开机按钮时最先打开的东西,它会进行一些测试。它是计算机最先打开的部分,这是真的吗?

答案1

顺序是:

  • BIOS 或 UEFI 固件

查找并加载

  • 引导加载程序(来自引导设备)

查找并加载

  • 操作系统

BIOS 位于 ROM、EEPROM 或(通常)类似 ROM 的 NOR 闪存中,开机时“已存在”。无需在 PC 上加载。

引导加载程序的工作是加载操作系统,为什么 BIOS 不自己做这件事呢?

PC BIOS 的历史可以追溯到 1981 年,当时第一台 PC 诞生了,它基本上基于 BIOS 在旧的 8 位 CP/M OS 堆栈中所扮演的角色。(DOS 在大多数方面与 CP/M 非常相似,尤其是最初的 1.0 版)。这个角色意味着 BIOS 不理解文件系统,但只能读取和写入一些定义的设备,包括磁盘扇区。BIOS 应该很简单,这样它很可能可以轻松移植到不同的硬件上。

此外,当时 ROM 空间非常昂贵,文件系统也被认为是操作系统的一部分(实际上直到今天,只有少数类 Unix 操作系统,如 Linux 和一些 BSD 真正很好地支持多种文件系统。)

UEFI 是 BIOS 的后继者,它可以理解文件系统(如果我没记错的话,至少是 FAT32),并且可以直接加载操作系统(Linux 系统该如何操作)。尽管如此,大多数 Windows 系统中最终发生的典型设置是“Windows 启动管理器”由 BIOS 或 UEFI 加载,然后查找并加载操作系统。Windows 可能采用这种方式来拥有一个可在 BIOS 和 UEFI 系统上运行的单一通用组件。

至于为什么在 1981 年至 UEFI 问世之间的很长一段时间内,没有人费心去扩展 BIOS 来理解文件系统,以下是一些见解:

  • 没有人真正“拥有” PC 平台,尽管 IBM 发明了它,但微软软件一直是大多数人购买它的原因,而英特尔现在制造了其中的大部分组件(并且一直制造其 CPU)。第一个非 IBM BIOS 是 IBM BIOS 的洁净室逆向工程克隆 - 然后分为开发和生产 BIOS 和固件的两家主要公司。因此,PC 固件在这里有点被夹在中间,并受制于来自具有竞争议程的不同公司的大量“多边”合作/竞争。(ACPI 就是这种情况的一个结果。)

  • 鉴于 DOS 和 Windows 在 PC 市场的主导地位以及最终对 OEM 的影响力,这意味着最终 BIOS 必须适应 Windows,而不是相反,而 Windows 开发人员认为没有必要改变对他们来说运行良好的东西。微软通常不支持对 Windows 没有好处的东西。

因此,BIOS 供应商可以向 BIOS 添加文件系统加载支持,但 Windows 可能不会费心去使用它,竞争的 BIOS 供应商可能不会实现它,而且这毫无意义。

UEFI 是英特尔在 Itanium 上率先采用的,而不是微软首创的。鉴于英特尔制造了大多数芯片组和主板硬件(甚至主板),他们处于非常有利的地位,可以帮助使其成为新标准。

答案2

BIOS 特定于主板并保存最低级别的设置,它会启动引导加载程序,引导加载程序比 BIOS 从硬件中抽象得更抽象,然后引导加载程序会启动操作系统,操作系统保存固件。BIOS 不会加载操作系统,因为这不是它的用途,使用它作为引导加载程序会限制主板可以使用的操作系统(如果他们选择支持 Linux 但不支持 Solaris,支持 Windows 但不支持其他操作系统等)。

相关内容