11.15. 电源和资源管理

Written by Hiten Pandya and Tom Rhodes.

以有效的方式利用硬件资源是非常重要的。在提出 ACPI 之前,管理电源使用和系统散热对操作系统是很困难的。硬件被嵌入的 BIOS 接口管理,例如可插拔 BIOS (PNPBIOS)或者高级电源管理(APM) 等等。电源和资源管理是现代操作系统的关键组成部分。 例如您可能当系统温度过高的时候让您的操作系统能监视到 (并且可能提醒您)。

在 FreeBSD 使用手册的这一章节,我们将提供 ACPI 全面的信息。参考资料会在末尾。ACPI 在 FreeBSD 5.X 及以上的操作系统中作为一个默认的内核模块被支持。对于 FreeBSD 4.9,ACPI 可以通过在内核配置文件中添加 device acpica 并且重新编译内核来启用。

11.15.1. 什么是 ACPI?

高级配置和电源接口(ACPI) 是一个业界标准的硬件资源和电源管理接口(因此而得名)。它是 操作系统控制的配置和电源管理(Operating System-directed configuration and Power Management),也就是说, 它给操作系统(OS)提供了更多的控制和弹性。 现代操作系统“延伸”了当前即插即用接口(像是 FreeBSD4.X 中使用的 APM)的限制,在 ACPI 的介绍之前。 ACPIAPM(高级电源管理) 的直接继承者。

11.15.2. 高级电源管理 (APM) 的缺点

高级电源管理 (APM) 是一种基于系统目前的活动控制其电源使用的机制。 APM BIOS 由 (系统的) 制造商提供, 并且是硬件平台专属的。 在 OS 中的 APM 驱动作为中介来访问 APM 软件接口, 从而实现对电源使用的管理。

APM 有四个主要的问题。 首先, 电源管理是通过 (制造商专属的) BIOS 实现的, 而 OS 则完全不了解其细节。 例如, 用户在 APM BIOS 中设置了硬盘驱动器的空闲等待数值, 当超过这一空闲时间的限制时, 它 (BIOS) 将会减慢硬盘驱动器的速度, 而不会征求 OS 的同意。 第二, APM 逻辑是嵌入 BIOS 的, 因此它是在 OS 的控制之外运转的。 这意味着用户只能通过通过刷新他们 ROM 中的 APM BIOS 才能够解决某些问题; 而这是一个很危险的操作, 因为它可能使系统进入一个无法恢复的状态。 第三, APM 是一种制造商专属的技术, 也就是说有很多第三方的 (重复的工作) 以及 bugs, 如果在一个制造商的 BIOS 中有, 也未必会在其他的产品中解决。 最后但绝不是最小的问题, APM BIOS 没有为实现复杂的电源策略提供足够的余地, 也无法实现能够非常适合具体机器的策略。

即插即用 BIOS (PNPBIOS) 在很多时候都是不可靠的。 PNPBIOS 是 16-位 的技术, 因此 OS 不得不使用 16-位 模拟才能够与 PNPBIOS 的方法 “接口”。

FreeBSD APM 驱动在 apm(4) 手册页中有描述。

11.15.3. 配置 ACPI

acpi.ko 驱动默认的在启动时通过 loader(8) 被加载并且 不应该 被编译进内核。原因是这个模块跟系统很容易的工作在一起,比方说不用为了 acpi.ko 而重新编译内核。 这对更简单的测试来说很有利。另一个原因是系统启动后再启动 ACPI 不是很有用,并且在一些情况下会失败。 拿不准的话只要全部禁止 ACPI 即可。 这个驱动不应该而且不能被卸载,因为系统通过它跟各种各样的硬件打交道。 ACPI 可以通过 acpiconf(8) 来禁止。实际上通过 ACPI 的交互可以通过 acpiconf(8) 来完成。 简单的说,如果任何关于 ACPI 的信息在 dmesg(8) 的输出中,那么它很可能已经运行了。

Note: ACPIAPM 不能共存并且应该份开始用。后来装载的如果注意到另一个在运行将会终止执行。

最简单的表现形式是,ACPI 可以通过 acpiconf(8)-s 标志和一个 1-5 的选项来使系统进入休眠状态。 5 选项将会像下面动作一样让系统软关机:

# halt -p

其他选项也是可行的。查看 acpiconf(8) 手册页以获得更多信息。