这BIOS软件内置于 PC 中,是 PC 开机时运行的第一个代码(“启动固件”)。当 PC 启动时,BIOS 的第一项工作是开机自检,初始化并识别系统设备,例如 CPU、RAM、视频显示卡、键盘和鼠标、硬盘驱动器、光盘驱动器和其他硬件。然后,BIOS 找到保存在外围设备(称为“启动设备”)(例如硬盘或 CD/DVD)上的引导加载程序软件,并加载和执行该软件,从而控制 PC。[2] 此过程称为引导或启动,是 bootstrapping 的缩写。
哪些条件决定了计算机系统必须安装 BIOS?
为什么操作系统实际上不能完成所有的 BIOS 工作?
答案1
BIOS 是硬件相关存储在主板本身上的一段代码。每个不同的主板都需要为其编写一个自定义 BIOS,因此不可能有一个通用的BIOS/OS 一体机(尽管 BIOS 从技术上来说只是存储的代码,因此您可以可以理论上为一个特定的主板编写一个操作系统)。正如您所提到的,BIOS 的目的是执行以下操作:
当PC启动时,BIOS的第一项工作就是进行开机自检,初始化并识别系统设备,例如CPU、RAM、视频显示卡、键盘和鼠标、硬盘驱动器、光盘驱动器和其他硬件。
请注意,您仍然可以在没有任何外部存储的情况下启动计算机 - 这就是 BIOS 成为计算机必需品的原因。换句话说,BIOS 提供了通用软件接口允许存储的计算机程序与连接到主板的各种硬件设备进行通信。
例如,如果我有两块不同的主板,它们带有两个不同的 SATA 控制器,BIOS 允许我编写一段可以同时适用于这两块主板的代码,而我无需了解主板如何向 SATA 设备发送命令。我只需告诉计算机“从此 SATA 设备读取扇区 X”,BIOS 就会负责将这些命令实际发送给硬件。
它实际上从 BIOS 中包含的存储程序获取“读取扇区 X”信息,该程序通常会指示计算机从存储在公共位置的引导加载程序开始读取。这些公共位置由各种软件和硬件开发人员商定,并且通常向公众提供,以允许系统之间更好地兼容。
一旦建立了基本级别的接口(再次,通过软件进行逻辑接口),操作系统本身就会与各种硬件设备建立一个通用接口(通常通过使用“设备驱动程序”),然后操作系统就可以控制硬件。
最后,需要注意的是,BIOS 还用于修改计算机硬件配置,并将其存储在板载 EEPROM 中(这样您的计算机就会在下次启动时记住这些更改)。但是,正如我之前所说,一旦加载了操作系统,它就可以完全控制计算机。
这使得主板制造商可以开发软件,让您从操作系统内部进行这些更改,而不必重新启动进入 BIOS。同样,这非常依赖于硬件和软件,但这表明所有计算机接口都是相对的。BIOS 正是它的名称所暗示的 - 一个基本的输入/输出系统,为更高级的程序(“操作系统”)提供一个通用的软件接口来控制机器。
答案2
您的操作系统位于您的硬盘上,如果您打开计算机,它不会神奇地开始从该硬盘读取。BIOS 从硬盘加载引导加载程序,以及进行一些测试并允许您配置 BIOS 的某些设置。
你的操作系统无法做到这一点因为它在硬盘上而不是在你的 ROM 中。
因此,您需要一个 BIOS 或类似(但不同)的技术,如 EFI...
制造商可以将部分操作系统放在 ROM 上(负责加载操作系统的引导加载程序);但是,这并不广泛适用,并且无论如何都有 BIOS 或 EFI 可用。
答案3
没有真正的逻辑原因。这更多的是遗产和历史的问题。
计算机没有安装 BIOS 的必要。它是 IBM PC 的遗留。虽然事实证明这是一个好主意
让操作系统这样做实际上不会改变任何事情,因为它仍然会执行类似 BIOS 的操作。当然,操作系统需要位于 ROM 中,而不是 I/O 设备上。当操作系统制造商决定使其操作系统 BIOS 与其他操作系统不兼容时,可能会出现垄断问题。将 BIOS 制造商与操作系统分开可以提高软件运行的自由度。
答案4
PC BIOS 的概念源自 CP/M,这是 IBM PC 占领市场之前在基于 8 位 Z-80“S-100”总线的计算机上流行的操作系统。
CP/M 期望硬件相关功能位于 ROM(BIOS)中。另一部分由引导加载程序从磁盘加载,是支持 CP/M 文件系统 (BDOS) 的软件,最后是命令处理器或“shell”(CCP)。CP/M 期望支持的硬件并不多:磁盘驱动器、显示器、一个或两个串行端口(COM 或 AUX 端口),可以连接打印机或调制解调器。
PC BIOS 执行的基本引导功能与 CP/M 类似,而 DOS 使用 BIOS 功能执行基本输入和输出,正如预期的那样。程序员最终绕过了这些功能,因为它们太慢了。这导致 80 年代中期的 PC 克隆制造商重新创建了整个平台(这很容易,因为 IBM 对原始 PC 的内部和外部都进行了很好的记录),而不仅仅是提供具有兼容接口的 BIOS,尽管他们也必须这样做。
至此我们可以说,对于现代操作系统来说,除了启动系统之外,BIOS 并不是真正必要的。然而...
从 20 世纪 90 年代初开始,电源管理的概念开始流行,BIOS 承担了这项任务。APM 可以很好地与单任务操作系统(如 DOS)配合使用,但不能与真正的多任务操作系统(如 Windows 或 Linux)配合使用。大约在这个时候,386 全面流行,这是支持真正多任务处理的 Intel CPU。DOS 和 BIOS 并未针对此 CPU 的新功能进行更新,主要是因为所有 Intel CPU 仍将在原始 PC-BIOS 所针对的传统 16 位兼容模式下运行。因此,现代操作系统几乎忽略/绕过 BIOS 的所有类似 CP/M 的输入/输出功能,除非在早期启动阶段。
最终,ACPI 得到了开发,它主要是 BIOS 的一部分,支持电源管理和(通常是笔记本电脑)平台特定事物的配置。ACPI 还处理休眠、睡眠或关机的最终电源切换状态。
因此,现在是 ACPI 和它的后继者 EFI 使 BIOS 之类的东西成为 PC 的必需品。总体概念是让 ACPI 成为平台或主板特定与操作系统之间的接口,因此不必为每种不同类型的主板构建单独的操作系统。
装有运行 Linux 的 ARM CPU 的开发板(以及手机硬件)存在这个问题。通常,它们会附带一个仅用于引导加载程序的固件,例如 U-boot,但操作系统必须将每个开发板作为单独的平台来支持。