UEFI 与 ACPI 简介
UEFI 与 ACPI 是现代计算机系统中负责硬件初始化、系统引导和电源配置管理的核心标准。两者位于操作系统与底层硬件之间,共同构成了现代计算机固件与系统的沟通桥梁。
参考
https://uefi.org/htmlspecs/ACPI_Spec_6_4_html/05_ACPI_Software_Programming_Model/ACPI_Software_Programming_Model.html
核心定义与区别
| 维度 | UEFI (Unified Extensible Firmware Interface) | ACPI (Advanced Configuration and Power Interface) |
|---|---|---|
| 定位 | 系统固件接口标准(替代传统的 Legacy BIOS) | 电源管理与硬件配置规范 |
| 主导阶段 | 开机引导阶段(系统启动至内核加载) | 运行时阶段(操作系统启动后全程参与) |
| 核心职责 | 硬件自检(POST)、初始化硬件、加载引导程序 | 管理设备电源状态、热插拔、散热控制及硬件抽象 |
| 控制主体 | 主板 Firmware / 固件代码 | 操作系统内核(通过 ACPI 解释器执行) |
两者如何协同工作?
UEFI 和 ACPI 并不是互斥的技术,而是在系统生命周期的不同阶段紧密配合:
- 系统上电与引导(UEFI 主导) 系统开机后,UEFI 固件首先执行,进行 CPU、内存及基础外设的初始化。在这个过程中,UEFI 固件会在内存中构建并填充 ACPI 表(ACPI Tables)。
- 交接控制权(Boot Hand-off) UEFI 加载操作系统的引导程序(Bootloader),并将保存 ACPI 表的内存地址传递给操作系统内核。
- 运行时管理(ACPI 主导) 操作系统接管系统后,UEFI 的大部分引导服务退出内存(仅保留 Runtime Services)。操作系统通过内置的 ACPI 解释器(如 Linux 中的 ACPICA)读取这些 ACPI 表,从而在无需了解具体硬件芯片细节的情况下,直接对硬件执行电源和设备状态控制。

上图展示了 ACPI 的核心组织方式:固件定义了固定的描述表(如 FADT/FACP)与微分描述表(DSDT),操作系统中的 ACPI 驱动通过解析这些表结构,将硬件控制接口(IO 端口、PCI 配置空间等)抽象给上层系统使用。
核心特性解析
UEFI 的主要优势
- 突破传统限制:支持 GPT 分区表,原生支持 2TB 以上的大容量硬盘引导。
- C 语言编写与模块化:相比传统的汇编 BIOS,UEFI 具备独立的文件系统支持与丰富的驱动开发能力。
- 安全启动(Secure Boot):通过数字签名验证引导程序和内核,防止 bootkit/rootkit 恶意代码侵入。
ACPI 的关键状态与机制
ACPI 将系统与设备的电源状态进行了标准化定义:
- 系统电源状态(System States):
- S0(Working):正常工作状态。
- S3(Standby / Sleep):挂起到内存(Suspend to RAM),仅内存供电。
- S4(Hibernate):休眠到硬盘(Suspend to Disk),系统状态写入磁盘后断电。
- S5(Soft Off):软关机状态。
-
S0ix(Modern Standby):现代待机状态,保持低功耗联网连接。
- 设备与 CPU 状态:
- Device States (D0 - D3):D0 为全速工作,D3 为关闭电源。
- Processor States (C0 - C3):C0 为执行指令状态,C1~C3 为不同深度的节能休眠状态。
留下评论