Добавил:
Upload Опубликованный материал нарушает ваши авторские права? Сообщите нам.
Вуз: Предмет: Файл:
ДП.docx
Скачиваний:
11
Добавлен:
23.09.2019
Размер:
4.64 Mб
Скачать

2.3.5 Управление питанием

Функциональный драйвер получает от Power Manager системные IRP, относящиеся к изменениям общего состояния энергопотребления в системе. Выполняя функции владельца политики для устройства, он преобразует эти инструк­ции в контекст устройства и выдает новые IRP (IRP устройства). Реагируя на IRP устройства, функциональный драйвер, прежде всего, обращает внимание на детали, относящиеся к устройству. Устройства могут хранить контекстную информацию, которая не должна теряться в периоды пониженного энергопотребления [2.2].

В WDM для описания состояний энергопотребления используются четыре возможных состояния устройств (рисунок 2.6).

Рисунок 2.6 – Состояния энергопотребления устройств

В состоянии DO устройство полностью функционально. В состоянии D3 устройство не потребляет энергии (или ограничивается минимальным потреблением, а, следовательно, не функционирует (или функционирует на очень низком уровне). Промежуточные состояния D1 и D2 обозначают два разных «дремлющих» состояния устройства. По мере перехода от состояния DO к D3 устройство потребляет все меньше и меньше энергии. Кроме того, оно хранит все меньше и меньше контекстной информации о своем текущем состоянии. Соответственно, продолжительность задержки, необходимой для возврата устройства к состоянию DO, возрастает.

Важным моментом является то, что операционная система не управляет состояниями энергопотребления уст­ройств напрямую — этот вопрос находится в компетенции драйверов устройств. Вместо этого система управляет питанием при помощи системных состояний энергопотребления, аналогичных состояниям устройств ACPI (рис. 2.7) [2.2].

Рабо­чее состояние (Working) — полнофункциональное состояние компьютера с пол­ным питанием. Программы могут выполняться только во время пребывания системы в состоянии Working.

Рисунок 2.7 – Состояния энергопотребления системы

Остальные системные состояния соответствуют конфигурациям с пониженным энергопотреблением, в которых программы не выполняются. Состояние Shutdown соответствует отключенному питанию.

Фактически, обработка системных IRP управления питанием сводится к их передаче и запросу IRP устройства, когда системный IRP перемещается вниз или вверх по стеку.

2.3.5.1 Обработка запросов irp_mj_power

Power Manager обменивается информацией с драйверами при помощи запросов IRP_MJ_POWER. В настоящее время определены четыре дополнительных кода функций (табл. 2.12) [2.3].

Таблица 2.12 - Дополнительные коды функций запроса IRP_MJ_POWER

Дополнительный код функции

Описание

IRP_MN_QUERY_POWER

Проверяет, возможно ли безопасное выполнение предстоящего изменения состояния энергопотребления

IRP_MN_SET_POWER

Приказывает драйверу изменить состояние энергопотребления

IRP_MN_WAIT_WAKE

Приказывает драйверу шины активизировать функцию пробуждения; передает функциональному драйверу информацию о сигналах на пробуждение

IRP_MN_POWER_SEQUENCE

Обеспечивает оптимизацию для сохранения и восстановления контекста