【问题标题】:Does UEFI replace standards like SMBIOS and ACPI? [closed]UEFI 会取代 SMBIOS 和 ACPI 等标准吗? [关闭]
【发布时间】:2021-06-10 16:46:34
【问题描述】:

我一直想知道,作为一个对操作系统背后的事情缺乏经验的开发人员,为什么固件会如此混乱。我试图至少了解这些碎片的位置。 UEFI 是在尝试替换所有这些以前的与固件交互的标准,还是将它们合并?

【问题讨论】:

    标签: x86 bios firmware uefi


    【解决方案1】:

    没有。

    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 表示系统管理,它与 SMM(系统管理模式)中的 SM 冲突。
    实际上,通过 SMBIOS,我错误地假设您的意思是在 SMM 中运行的固件部分(我猜它被称为相同)。
    SMM 基本上是一种事件驱动的机制,可以透明地回调到固件中操作系统。
    此功能用于在软件中实现某些硬件功能(即模拟它们,如旧版 PS2 支持或 fTPM),以响应操作系统无法处理的关键事件(错误或热故障)或透明地欺骗操作系统管理目的(例如重启、Key-Video-Mouse 服务等)。


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

    你可能已经知道这张图片了:

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

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

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2019-12-30
      • 1970-01-01
      • 2018-01-01
      • 1970-01-01
      • 2020-05-25
      • 2016-12-20
      相关资源
      最近更新 更多