UEFI 会取代 SMBIOS 和 ACPI 等标准吗?

问题描述

我一直想知道,作为一个对操作系统背后发生的事情几乎没有经验的开发人员,为什么固件如此混乱。我试图至少了解这些部分适合的位置。 UEFI 是试图取代所有这些以前与固件交互的标准还是将它们合并?

解决方法

没有

UEFI 是不同于 ACPI 和 SMBIOS 的标准。

UEFI 旨在标准化操作系统和固件之间的接口,以便启动操作系统。
启动时,操作系统处于特殊位置,需要与硬件对话才能加载自身的其余部分,但它需要自身的其余部分(驱动程序)与硬件对话。

提供固件服务的目的是为操作系统提供与硬件对话的最小支持。
但是这些服务从来没有被正确地标准化,它们是从约定俗成和遗留下来的(例如,16 位实模式 BIOS 接口,古老的 C/H/S 驱动器几何结构以及各种解决磁盘大小限制的方法,并且没有标准分区或其他清晰的地方可以放置超过 1 个扇区(512 字节)的引导加载程序代码。

UEFI 使界面现代化。引用:

建立在现有投资的基础上。在可能的情况下,规范避免重新定义接口 现有行业规范提供足够覆盖范围的区域中的结构。为了 例如,ACPI 规范为操作系统提供了发现所需的所有信息 并配置平台资源。再次,这种设计的哲学选择 规范旨在尽可能降低其采用的障碍。

UEFI specifications 的第 1.3 节(目标)列出了 UEFI 的目标。


ACPI 是一个标准化接口,用于将信息(以表格和字节码的形式)从固件传递到操作系统。
某些硬件无法发现,操作系统只能通过包含大量存在测试和驱动程序来支持它。
但是固件知道硬件,因为它是用一组开关编译的,由人工设置,与硬件匹配。
ACPI 是固件将此信息传递给操作系统的方式。实际的规范本身更复杂,因为它包含一个完整的抽象命名空间,其中包含可执行方法和各种概念。
但想法很简单:通知操作系统有关硬件的信息。


SMBIOS 确实与 ACPI 部分重叠;它们是由不同组织设计的两个标准。
SMBIOS 比 ACPI 或 UEFI 简单得多:它仅限于向操作系统报告一组静态信息。
ACPI 为操作系统提供管理硬件的信息,而 SMBIOS 规范主要提供人类可读的信息(例如固件版本或设备安装在哪个物理 PCI 插槽中)。

注意SMBIOS中的SM是System Management,与SMM(System Management Mode)中的SM冲突。
事实上,通过 SMBIOS,我错误地认为您的意思是在 SMM 中运行的固件部分(我猜这部分被称为相同)。
SMM 基本上是一种事件驱动机制,可以对操作系统透明地回调固件。
此功能用于在软件中实现一些硬件功能(即模拟它们,如旧版 PS2 支持或 fTPM),以响应操作系统无法处理的关键事件(错误或热故障)或透明地欺骗操作系统管理目的(例如重启、按键-视频-鼠标服务等)。


请记住,这些规范是由不同的人在不同的时间制定的。 (但 UEFI 和 ACPI 目前维护 by the same organization。)
一旦一个标准被足够多的软件(或进口足够多的软件公司)采用,它就会永远保持下去。

您可能已经知道这张图片:

UEFI and the other standards

(请注意,“EFI OS Loader”实际上是操作系统的一部分,而不是 UEFI。它由固件加载,并使用 UEFI 调用加载操作系统的其余部分。) >

您可以看到 UEFI 与 ACPI 和 SMBIOS 并存。