12.15 电源和资源管理

Written by Hiten Pandya 和 Tom Rhodes.

   BIOS 接口管理,例如可插拔 BIOS (PNPBIOS)或者高级电源管理(APM) 等等。电源和资源管理是现代操作系统的关键组成部分。 例如您可能当系统温度过高的时候让您的操作系统能监视到 (并且可能提醒您)。

  以有效的方式利用硬件资源是非常重要的。 在引入 ACPI 之前, 管理电源使用和系统散热对操作系统是很困难的。 硬件由 BIOS 进行管理, 因而用户对电源管理配置的控制和查看都比较困难。 一些系统通过 高级电源管理 (APM) 提供了有限的配置能力。 电源和资源管理是现代操作系统的一个关键组件。 例如, 您可能希望操作系统监视系统的一些限制, 例如系统的温度是否超出了预期的增长速度 (并在需要时发出警告)。

  在 FreeBSD 使用手册的这一章节,我们将提供 ACPI 全面的信息。 参考资料会在末尾给出。

12.15.1 什么是 ACPI?

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

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

  高级电源管理 (APM) 是一种基于系统目前的活动控制其电源使用的机制。 APM BIOS 由 (系统的) 制造商提供, 并且是硬件平台专属的。 在 OS 中的 APM 驱动作为中介来访问 APM 软件接口, 从而实现对电源使用的管理。 在 2000 年或更早的时期生产的计算机系统, 仍需要使用 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) 手册页中有描述。

12.15.3 配置 ACPI

  默认情况下, acpi.ko 驱动, 会在系统引导时由 loader(8) 加载, 而 不应 直接联编进内核。 这样做的原因是模块操作起来更方便, 例如, 无需重新联编内核就可以切换到另一个 acpi.ko 版本。 这样可以让测试变得更简单一些。 另一个原因是, 许多时候在启动已经启动之后再启动 ACPI 可能会有些问题。 如果您遇到了问题, 可以全面禁用 ACPI。 这个驱动不应, 目前也无法卸载, 因为系统总线通过它与许多不同的硬件进行交互。 ACPI 可以通过在 /boot/loader.conf 中配置或在 loader(8) 提示符处配置 hint.acpi.0.disabled="1" 来禁用。

注意: ACPIAPM 不能共存, 相反, 它们应分开使用。 后加载的驱动如果发现系统中已经执行了其中的一个, 便会停止执行。

  ACPI 可以用来让系统进入休眠模式, 方法是使用 acpiconf(8)-s 参数, 加上一个 1-5 的数字。 多数用户会希望使用 13 (挂起到 RAM)。 而 5 则会让系统执行与下列命令效果类似的软关机:

# halt -p

  除此之外, 还有一些通过 sysctl(8) 提供的选项。 请参见联机手册 acpi(4) acpiconf(8) 以获得更多信息。

本文档和其它文档可从这里下载:ftp://ftp.FreeBSD.org/pub/FreeBSD/doc/.

如果对于FreeBSD有问题,请先阅读文档,如不能解决再联系<questions@FreeBSD.org>.
关于本文档的问题请发信联系 <doc@FreeBSD.org>.