Electronic Joint Business

Solution for E-Business

FreeBSD

FreeBSD 的 ACPI 实现

几乎所有现代计算机系统的硬件都允许对电源使用进行管理、对系统温度进行监测,并将之维持在适当水平。由此一定水平的电源消耗就能带来最佳的性能。这对于使用电池的移动平台尤为重要,因为不必要的电源消耗会减少电池续航时间,在结束工作前,你就不得不重新充电。节电对桌面系统也同样重要,在系统空闲时关闭显示器、磁盘驱动器等设备显著可以降低能耗。1

不幸的是,在传统 PC 中, 用于电源及散热配置管理的大多数软件都与 BIOS 紧密相关。而且,除非受管的设备所连接的是即插即用总线(如 PCI),否则操作系统就很难便捷地检测、配置或管理设备。例如 ISA PnP 机制适用于枚举外置 ISA 卡设备而不是板载设备。而 PnP BIOS 则适用于枚举板载设备,但也很难扩展成通用方法。另外 PnP BIOS 是 16 位的,所以操作系统必须通过 16 位虚拟环境才能调用 PnP BIOS 的函数。

在引入高级配置和电源管理接口 (ACPI — Advanced Configuration and Power Management Interface) 前, 高级电源管理 (APM) BIOS 被广泛用于电源管理。在 APM 中,大部分的电源管理控制逻辑都驻留在 APM BIOS 代码中。支持 APM 的操作系统通过固定的 BIOS API 与 APM BIOS 进行通信,这些 API 提供了 BIOS 功能的基本访问。支持 APM 的操作系统必须定期对 APM 进行轮询以处理 APM 相关事件。APM BIOS 还可使用特殊系统管理中断,该中断对操作系统是不可见的。APM 提供了四种状态:运行、暂停、休眠和软关闭。

有三大因素制约着 APM 的使用。首先,除非供应商提供特殊的程序,否则很多 APM 功能都要在操作系统加载前通过供应商专有的 BIOS 菜单进行配置,比如设置关闭显示器前的系统空闲时间。此外,实施 APM 电源管理配置的具体策略是由 BIOS 供应商指定的。例如,某 APM BIOS 的策略是在关闭显示器的同时也降低 CPU 时钟频率或关闭网卡等设备,如果不修改 BIOS ,你就无法修改这一策略。

其次,APM 是 BIOS 级别代码,运行在操作系统的范围外。这使得开发和调试 APM 代码极其困难。而用户也只能通过烧写 ROM 的方式来解决 APM 的错误。重刷 BIOS 相当危险,因为一旦发生错误,系统就再无法使用了。

>>> 阅读全文

 

, , , , ,