Advanced Power Management (APM ) - это API, разработанный Intel и Microsoft, выпущенные в 1992 году, что позволяет операционной системе, на которой работает IBM-совместимый персональный компьютер, работать с BIOS (часть прошивки компьютера) для достижения управления питанием.
Версия 1.2 была последней версией спецификации APM, выпущенной в 1996 году. ACPI - это преемник APM. Microsoft отказалась от поддержки APM в Windows Vista. Ядро Linux по-прежнему в основном поддерживает APM, хотя в версии 3.0 поддержка простоя процессора APM была прекращена.
APM использует многоуровневый подход для управления устройствами. Приложения с поддержкой APM (включая драйверы устройств) взаимодействуют с драйвером APM для конкретной ОС. Этот драйвер взаимодействует с BIOS, поддерживающим APM, который управляет оборудованием. Существует возможность отказаться от управления APM для отдельных устройств, что можно использовать, если драйвер хочет напрямую взаимодействовать с аппаратным устройством.
Связь происходит в обоих направлениях; События управления питанием отправляются из BIOS в драйвер APM, а драйвер APM отправляет информацию и запросы в BIOS через вызовы функций. Таким образом, драйвер APM является посредником между BIOS и операционной системой.
Управление питанием происходит двумя способами; через вышеупомянутые вызовы функций из драйвера APM в BIOS, запрашивающие изменения состояния питания, и автоматически в зависимости от активности устройства.
Существует 12 событий, связанных с питанием (например, ожидания, запросы приостановки и возобновления, а также уведомления о низком заряде батареи), а также событий, определенных OEM, которые могут быть отправленным из APM BIOS в операционную систему. Драйвер APM регулярно опрашивает на предмет уведомлений об изменении событий.
События управления питанием:
Имя | Код | Комментарий |
---|---|---|
Уведомление о запросе режима ожидания системы | 0x0001 | |
Уведомление о запросе приостановки системы | 0x0002 | |
Обычное системное уведомление о возобновлении | 0x0003 | |
Критическое возобновление системного уведомления | 0x0004 | |
Уведомление о низком уровне заряда батареи | 0x0005 | |
Уведомление об изменении состояния питания | 0x0006 | |
Уведомление о времени обновления | 0x0007 | |
Уведомление о критическом отключении системы | 0x0008 | |
Уведомление о запросе режима ожидания системы пользователя | 0x0009 | |
Пользовательское уведомление о запросе приостановки системы | 0x000A | |
Уведомление о возобновлении режима ожидания системы | 0x000B | |
Уведомление об изменении возможностей | 0x000C | Из-за установки или вставки / удаления устройства |
Функции управления питанием:
Имя | Код | Комментарий |
---|---|---|
Проверка установки APM | 0x00 | |
APM Real Mode Interface Connect | 0x01 | |
APM Protected Mode 16-bit Interface Connect | 0x02 | Избегает реального или виртуального режима86. |
APM Protected Mode 32-bit Interface Connect | 0x03 | Избегает реального или виртуального режима86. |
Отключение интерфейса APM | 0x04 | |
CPU Idle | 0x05 | Запрашивает приостановку системы.. 0) Тактовая частота остановлена до прерывания тика таймера.. 1) Низкая частота |
CPU Busy | 0x06 | Драйвер сообщает системе APM о необходимости восстановить тактовую частоту CPU. |
Установить состояние питания | 0x07 | Установить систему или устройство в состояние ожидания / ожидания / выключения. |
Включение / отключение управления питанием | 0x08 | |
Восстановить настройки APM BIOS при включении питания | 0x09 | |
Получить состояние питания | 0x0A | Поддерживает состояние переменного тока «При резервном питании». И состояние батареи. |
Получить событие PM | 0x0B | Проверяет наличие событий APM. Вызывается раз в секунду. |
Получить состояние питания | 0x0C | |
Включение / отключение управления питанием устройства | 0x0D | |
Версия драйвера APM | 0x0E | |
Включение / отключение управления питанием | 0x0F | Управление APM для определенного устройства. |
Получить возможности | 0x10 | |
Получить / установить / отключить таймер возобновления | 0x11 | |
Включить / отключить возобновление при индикаторе звонка | 0x12 | |
Включить / Отключить запросы на основе таймера | 0x13 | |
Проверка установки OEM APM | 0x80 | Сообщает, поддерживает ли APM BIOS функции, зависящие от оборудования OEM. |
Функция OEM APM | 0x80 | Доступ к специальным функциям OEM. |
Определен 21 вызов функции APM, которые драйвер APM может использовать для запроса состояний управления питанием или перехода между состояниями питания. Примеры вызовов функций включают сообщение BIOS о текущем использовании ЦП (BIOS может ответить на такой вызов, переведя ЦП в состояние низкого энергопотребления или возвращая его в состояние полной мощности), получение текущего состояния питания устройство или запрос изменения состояния питания.
Спецификация APM определяет состояния питания системы и устройства.
APM определяет пять состояний питания компьютерной системы:
APM также определяет состояния питания, которые может осуществлять. Не требуется, чтобы устройство с поддержкой APM реализовывало все состояния.
Четыре состояния:
Ядро ЦП (определяется в APM как частота ЦП, кэш, системная шина и системные таймеры) обрабатываются в APM особым образом, так как это последнее устройство, которое будет отключено, и первое устройство, которое будет включено обратно. Ядро ЦП всегда управляется через APM BIOS (нет возможности управлять им через драйвер). Драйверы могут использовать вызовы функций APM для уведомления BIOS об использовании ЦП, но BIOS должен действовать в соответствии с этой информацией; драйвер не может напрямую указать ЦП перейти в состояние энергосбережения.
Спецификация ATA определяет условия APM для жестких дисков с помощью подкоманды 0x05, которая определяет компромисс между частотой замедления и постоянным включением спектакль. В отличие от APM на стороне BIOS, ATA APM никогда не считался устаревшим.