Написал Hiten Pandya, Tom Rhodes.
Очень важно использовать аппаратные ресурсы эффективно. До того, как появился ACPI, управление потреблением питания и температурными
характеристиками системы было очень сложной для операционной системы задачей. Аппаратное
обеспечение контролировалось одним из видов встроенного интерфейса BIOS, таким как: Plug and Play BIOS (PNPBIOS), Advanced Power Management (APM) и так далее. Управление
питанием и ресурсами это один из ключевых компонентов современной операционной системы.
Например, вам может потребоваться, чтобы операционная система следила за температурными
ограничениями и возможно, предупреждала при неожиданном росте температуры.
В этом разделе Руководства FreeBSD, мы предоставим исчерпывающую информацию о ACPI. В конце раздела есть ссылки для дальнейшего чтения.
Учтите, что ACPI есть только в FreeBSD 5.X и выше
в качестве стандартного модуля ядра. В FreeBSD 4.9 ACPI можно включить добавлением строки device acpica к файлу настройки ядра и его пересборкой.
Advanced Configuration and Power Interface (ACPI)
это стандарт, написанный объединением поставщиков в целях предоставления стандартного
интерфейса для аппаратных ресурсов и управления питанием (отсюда и название). Это
ключевой элемент Operating System-directed
configuration and Power Management, т.е.: он предоставляет операционной
системе (OS) больше контроля и более универсален.
Современные системы вышли за пределы ограничений существующих Plug and Play интерфейсов
(таких как APM, использовавшийся в FreeBSD 4.X), до появления ACPI. ACPI это прямой
наследник APM (Advanced Power Management).
Средства Advanced Power Management
(APM) управляют энергопотреблением системы в зависимости от нагрузки. APM BIOS
предоставляется поставщиком системы и специфичен для данной аппаратной платформы. Драйвер
APM в OS обеспечивает доступ к APM Software
Interface, который позволяет управлять уровнями потребления питания.
В APM имеется четыре основных проблемы. Во-первых, управление энергопотреблением
осуществляется через зависимый от поставщика BIOS, и OS ничего не знает нем. Один пример:
когда пользователь устанавливает время ожидания для жесткого диска в APM BIOS, и это
время истекает, BIOS останавливает жесткий диск без согласования с OS. Во-вторых,
алгоритм APM встроен в BIOS, и все действия происходят вне контроля OS. Это означает, что
пользователи могут решить проблемы с APM BIOS только путем перепрошивки его ROM; это
очень опасная процедура, и если она завершится неудачно, система может прийти в
невосстановимое состояние. В-третьих, реализация технологии APM зависит от поставщика,
что означает дублирование усилий и если в BIOS одного из поставщиков будет найдена и
исправлена ошибка, ее могли не исправить другие поставщики. Наконец, объем APM BIOS
недостаточно велик для реализации сложной политики управления питанием, или такой
политики, которая может хорошо адаптироваться к потребностям компьютера.
Plug and Play BIOS (PNPBIOS) был
неудобен во многих ситуациях. PNPBIOS это 16-битная технология, поэтому OS требовалось
использовать 16-битную эмуляцию для ``взаимодействия'' с методами PNPBIOS.
FreeBSD драйвер APM документирован в странице
справочника apm(4).
loader(8) загружает
драйвер acpi.ko по умолчанию, его не надо встраивать в ядро. Причина в том, что с модулями
проще работать, например переключиться на другой acpi.ko без
пересборки ядра. Преимущество в упрощении тестирования. Другая причина в том, что запуск
ACPI после старта системы не очень полезен и при
некоторых условиях может приводить к краху. Если вы сомневаетесь, отключите ACPI совсем. Драйвер не должен и не может быть выгружен,
поскольку системная шина используется для различных взаимодействий оборудования. ACPI может быть выключен с помощью утилиты
acpiconf(8).
Фактически большинство взаимодействий с ACPI может
быть выполнено через
acpiconf(8). В
основном это означает, что если в выводе dmesg(8) есть что-то
об ACPI, он скорее всего работает.
Замечание: ACPI и APM не могут сосуществовать и должны использоваться раздельно.
Каждый из них прервет загрузку, если обнаружит загруженный драйвер другого.
В простейшей форме, ACPI может использоваться для
перевода системы в спящий режим с помощью
acpiconf(8), с
флагом -s и параметром 1-5.
Большинству пользователей нужен только параметр 1. Параметр
5 сделает ``мягкое'' завершение работы, так же как и:
# halt -p
Доступны и другие параметры. Обратитесь к странице справочника
acpiconf(8) за
дополнительной информацией.