Весь Петербург в Интернете

Компьютер-Информ || Архив || Рубрики || Поиск || Подписка || Работа || О "КИ" || Карта


Управление питанием и реализация ACPI
в MS Windows 2000 ≈ теория и практика


Материал любезно предоставлен сайтом iXBT.com


Управлять питанием могут не только владельцы ноутбуков, где возможность гибкого управления режимами работы компьютера просто необходима, но и пользователи настольных ПК, которым тоже пригодится, например, режим Hibernate. В данной статье рассмотрены вопросы оптимизации применения ОС MS Windows 2000 в случае необходимости или желания применения различных ╚спящих╩ режимов, а также описан интерфейс ACPI (в понимании и исполнении MS Windows 2000). Материал может оказаться особенно полезным для пользователей, которые хотят приобрести современный ноутбук и планируют установить на него систему ОС MS Windows 2000 (или она уже предустановлена).  

ACPI

Термин ACPI расшифровывается, как Advanced Configuration and Power Interface ≈ расширенный интерфейс конфигурирования компьютера и управления питанием. На базе ACPI построен любой современный компьютер на аппаратном уровне. В системе с ACPI именно этот свод стандартов и правил используется для конфигурирования и работы аппаратных средств, например, для назначения прерываний и ресурсов устройствам на современных шинах (PCI и AGP), для получения информации о работе устройств, для работы дополнительных ╚энергосберегающих╩ кнопок и датчиков или, например, для получения данных об оставшейся в аккумуляторах энергии. Сам стандарт ACPI имеет уже многолетнюю историю, и большинство систем теоретически с ним совместимо. Практика же очень сильно отстала от реальности, и полную поддержку ACPI, которой реально можно пользоваться, имеют лишь системы, выпущенные в последние год-полтора. Даже некоторые материнские платы на известном чипсете i440BX, например, иногда не поддерживают ACPI. Основное условие совместимости системы с ACPI ≈ это поддержка ACPI материнской платой. Чаще всего сама аппаратная поддержка (возможность такой поддержки) есть даже в не очень новых платах, но второй обязательный компонент этой поддержки ≈ ACPI-совместимая BIOS ≈ может и отсутствовать. В таком случае может помочь прошивка новой версии BIOS (если плата все же достаточно технически современна сама по себе). Однако надеяться на то, что производитель обеспечил написание такой прошивки, можно далеко не всегда.

Преимущества и недостатки ACPI-систем,
с точки зрения конфигурирования аппаратных средств

Зададим вполне обоснованный вопрос ≈ какие преимущества получили пользователи обычных систем при переходе на ОС, поддерживающие ACPI. Что изменилось в обычной работе компьютера? На данный вопрос можно ответить так ≈ ничего. Пока все работает нормально, то и ACPI, и традиционная система совершенно равнозначны ≈ по производительности, надежности и, вообще, почти по всем реальным показателям. Основное практическое отличие ACPI-систем ≈ система назначения и разделения прерываний шин PCI и AGP теперь работает немного по-другому. Хуже или лучше ≈ сказать трудно, но можно отметить один (скорее неприятный, чем полезный) момент: автоматизация всех конфигурационных процессов в MS Windows 2000 достигла слишком высокого уровня и разрешить какой-нибудь конфликт вручную стало трудно. Слишком часто драйверы MS Windows 2000, идейно рассчитанные на работу в ACPI-режиме, не дают изменить прерывания, используемые PCI- и AGP-устройствами. У ACPI-систем есть также одно нехорошее свойство ≈ назначать многим устройствам одно прерывание даже в случае наличия свободных ресурсов просто потому, что платы ╚согласились╩ работать в совместном режиме. Будет ли реально работать подобная связка? Иногда ≈ не работает.

Есть ли какие-либо положительные моменты от присутствия ACPI в системе работы с прерываниями? Да, есть. Но лишь в случае, если в компьютерной системе все же намного больше устройств, чем прерываний. Как показывает практика, у системы в ACPI-режиме больше шансов удачно сконфигурировать множество потенциально конфликтующих устройств.

Можно также отметить, что сложная система (с поддержкой ACPI) может оказаться не совсем совместимой. Она будет корректно работать в MS Windows 2000 или только лишь в ACPI-режиме или, наоборот, ≈ только в традиционной конфигурации. Какой из двух вариантов лучше, для обычной работы компьютера не важно: лишь бы устройства работали так, как нужно пользователю. Необходимо также отметить, что коренным образом изменить конфигурацию системы можно, лишь выключив ACPI-режим. Отключение ACPI-режима позволяет вручную изменять некоторые прерывания и ресурсы, которые ранее конфигурировались исключительно автоматом. Переход из ACPI в стандартную конфигурацию ≈ это (обычно) не представляющая опасности операция. Ее можно выполнить следующим образом: зайти в менеджер устройств и в разделе Computer (компьютер) изменить ╚драйвер╩ для единственного подпункта ≈ компьютера ≈ на Standard PC (или на подходящий многопроцессорный тип).

Эту операцию можно выполнить и в обратном направлении (необходимо только иметь в виду, что компьютер без поддержки ACPI может и не загрузиться в ACPI-режиме). Как показывает практика, переход из одного состояния в другое хотя и выглядит довольно впечатляюще, ≈ все устройства проходят повторную инсталляцию драйверов (большей частью, автоматически), ≈ но совершенно безопасен (даже на довольно сложных машинах). Но все же риск не загрузиться после такой операции, конечно, присутствует.

Подводя некоторый итог, ACPI-интерфейс в MS Windows 2000 хоть и работает вполне корректно, но не является обязательным элементом для полноценного функционирования системы. Существует мнение, что за поддержкой ACPI гнаться в настоящее время все еще не стоит. Улучшенные возможности конфигурирования оборудования могут выйти боком с той же вероятностью, с какой могут реально разрешить конфликт устройств (а управление питанием неплохо работает и через APM). Некоторые компьютеры, впрочем, могут потерять какие-то функции, например, блок питания ATX может перестать сам выключаться без ACPI (а может и не перестать).

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

В смысле управления питанием и режимами работы компьютера, стандарт ACPI является дальнейшим развитием стандарта APM (Advanced Power Management). ACPI разрабатывался, в частности, специально для поддержки технологии OnNow (идеология устройства компьютера, который готов быстро ╚проснуться╩ и приступить к работе в любое время). Следует отметить, что в MS Windows 2000 большинство возможностей по управлению питанием реализовано и в APM-режиме, поэтому пользователям более старых или не работающих в ACPI-режиме компьютеров не придется жалеть об упущенных возможностях. В ОС MS Windows 2000 реализованы 2 режима ╚сна╩:
- Режим Hibernate ≈ сброс всех данных из памяти на ЖД и полное выключение компьютера. При следующем запуске система просто восстанавливает работу на месте останова. Основная ценность данного режима заключается в том, что компьютер действительно полностью выключается.
- Режим Stand by ≈ ╚ждущий режим╩ ≈ менее кардинальное действие, полезное, в основном, лишь пользователям портативных компьютеров. Компьютер останавливает ЖД, выключает экран и большинство периферийных устройств и максимально снижает энергопотребление процессора. Реализация данного режима зависит от аппаратуры, но общая и главная характеристика режима Stand by ≈ компьютер остается работать, а пользовательские данные находятся в памяти. Настольные персональные системы часто не предоставляют режима Stand by, т. к. он работает там не очень эффектно ≈ основной вентилятор блока питания остается работать, и компьютер по-прежнему нельзя считать ╚спящим╩ (хотя бы по уровню шума).

Поговорим подробнее об этих режимах и о том, какие практические трудности могут возникнуть при желании их применить.

Hibernate

Режим Hibernate сохраняет все состояние компьютера на ЖД, включая режим работы всех устройств системы. Основное преимущество Hibernate перед полной остановкой компьютера ≈ небольшое время восстановления из этого режима (составляет, буквально, десятки секунд). Полная загрузка ОС занимает, обычно, в несколько раз больше времени. Положительной чертой режима Hibernate является также точное сохранение состояния (перед остановом) пользовательской системы. При входе в режим Hibernate останавливается большая часть устройств ПК. При этом драйверы устройств сохраняют режимы своей работы, чтобы затем восстановить их в то же состояние. Если какой-либо драйвер не может сделать этого, например, во время работы модема, то он откажет системе в переходе в состояние Hibernate. Продолжительность данной фазы (Preparing to hibernate) зависит от аппаратных средств и драйверов, но, в среднем, она продолжается не более 5-10 с. Вторая фаза процесса (сброс данных памяти на ЖД) зависит от скорости диска и емкости ОП (может длиться от 10 до 40 с). Файл, в который сохраняется память системы, называется hiberfil.sys и располагается в корневом каталоге системного диска.

Выход из режима Hibernate осуществляется, примерно, с той же скоростью, что и вход в него. Вместо загрузки ОС из нулевого состояния на текстовом экране с полоской внизу идет процесс восстановления памяти системы, а потом (еще 5-10 с) ≈ восстановление состояния устройств компьютера (и он снова готов к работе). Что случится, если система не сможет восстановить свое состояние? Это будет эквивалентно перезагрузке (т. е. будут потеряны данные, с которыми работал пользователь в момент входа в режим Hibernate). Следует отметить, что содержимое дисковых кэшей на запись сбрасывается на диск при входе в Hibernate (но это не поможет вернуть данные программ). Если система сможет определить, что восстановление прошло неудачно, то при следующем запуске она предложит попробовать загрузиться еще раз. Альтернативой будет обычная загрузка с нуля с потерей данных.

Что может помешать компьютеру успешно выйти из режима Hibernate? Причин может быть две. Первая ≈ это неудачный вход в Hibernate или повреждение данных, необходимых для выхода. Вторая причина (более реальная) ≈ изменение в промежутке между ╚засыпанием╩ и ╚пробуждением╩ каких-либо параметров компьютера, которые не позволяют восстановить работу в исходное состояние:
Изменение конфигурации дисков. Общее правило такое ≈ в режиме Hibernate, в общем случае, можно добавлять дисковые устройства. Компьютер (по идее) не должен изменять свою конфигурацию, но добавление лишнего диска MS Windows 2000 воспримет (или не заметит ≈ до нормальной перезагрузки). Но конфигурацию дисков нужно изменять осторожно ≈ если добавление диска вдруг изменит конфигурацию оборудования (например, контроллеров), то может оказаться, что нельзя будет восстановиться. Поэтому добавлять диски следует тоже осторожно. Отключать диски не рекомендуется, даже если это простой IDE CD-ROM, который не используется системой (c вероятностью, близкой к 100%, система повиснет сразу после восстановления из Hibernate). Надо стараться также не изменять параметры дисков или файлов из других ОС. MS Windows 2000 при восстановлении из режима Hibernate блокирует загрузку других систем своим загрузчиком. Если по каким-либо причинам пользователю все же удалось получить доступ к этому диску, то лучше не трогать его (иначе можно устроить серьезную аварию файловой системы, вплоть до фатальной).

Отключение и подключение плат. Эту операцию лучше вообще не делать (хотя она может быть выполнена и корректно). На практике, к сожалению, выполнение этой операции слишком часто приводит к сбою.

Лучше всего не изменять параметры BIOS. Изменение некоторых настроек может повредить еще больше, чем добавление аппаратной конфигурации ПК.
По умолчанию режим Hibernate в ОС MS Windows 2000 выключен. Это сделано, видимо, потому, что размер файла, необходимого для сохранения всего состояния системы, равен объему ОП компьютера. В некоторых ситуациях автоматическое создание такого файла на этапе инсталляции может быть нежелательно. Включить поддержку Hibernate можно через панель управления: Power, закладка Hibernate. Если этой закладки нет, то, значит, система не поддерживает режим Hibernate. Есть также одна причина, которая может привести к этому, ≈ наличие драйверов, которые не поддерживают технологию OnNow:
Драйверы аппаратуры, не поддерживающие технологию OnNow в принципе, т. е. не знающие, как приостановить или выключить свое устройство, сохранив его состояние. Причины могут быть разные: например, специфическое оборудование, которое действительно не позволяет выполнить подобную операцию. Чаще случается, впрочем, что в драйвере эти возможности просто не реализованы. Проблему можно попробовать решить следующим образом: отключать драйверы плат или аппаратов (если неизвестно, какое именно устройство виновато) и смотреть, не появилась ли закладка Hibernate (возможно, придется перезагружаться). Если же причина сбоя понятна, то необходимо либо достать новый драйвер, либо ≈ новое/другое устройство.
Драйверы аппаратных средств от MS Windows NT 4.0 ≈ любой из них приведет к вышерассмотренным трудностям.
Драйверы, не имеющие прямого отношения к аппаратным средствам, тоже могут вызвать невозможность входа в Hibernate. К программам, использующим подобные драйверы, можно отнести различные системные утилиты: в основном, мониторы или драйверы программной поддержки аппаратных решений. Как вывод: если драйвер не имеет отношения к аппаратуре, его всегда можно переписать для поддержки Hibernate (т. е. нужно просто поискать новую версию программ). Прямая поддержка MS Windows 2000 почти гарантирует корректную работу Hibernate. Как выявить драйвер, не дающий этой возможности? Может помочь следующий алгоритм работы: зайти в менеджер устройств, затем ≈ в меню View ≈ Show Hidden Devices и в разделе Non-Plug and Play Drivers поискать этот драйвер. В данном разделе изначально присутствуют десятки системных драйверов, оставшихся от архитектуры Windows NT 4.0, поэтому необходимо искать драйвер, созвучный с установленными на ПК пакетами. Название не-P&P драйвера в подавляющем большинстве случаев соответствует имени файла с расширением .sys, который должен лежать где-то на диске (например в winnt\system32\drivers). В информации о версии файла (правый щелчок мыши ≈ свойства) проводника можно посмотреть, за что отвечает каждый конкретный драйвер этого раздела, и найти ╚лишний╩ драйвер, чтобы затем уже отследить сам продукт.
Стоит учесть еще такой момент: если в какой-то момент возможность Hibernate потеряна, то файл hiberfil.sys все равно останется на ЖД ПК. Его не удастся стереть ≈ придется отключить мешающий драйвер, отключить Hibernate, а уже потом снова поставить драйвер. Более простых путей нет, даже если физически удалить файл hiberfil.sys, он появится снова. Поэтому необходимо быть осторожным перед добавлением устройств, которые отключают режим Hibernate.

(Окончание следует)  


       КОМПЬЮТЕР-ИНФОРМ 
          Главная страница || Статьи ╧ 3'2001 || Новости СПб || Новости России || Новости мира

Рубрики || Работа || Услуги || Поиск || Архив || Дни рождения
О "КИ" || График выхода || Карта сайта || Подписка

Главная страница

Сайт газеты "Компьютер-Информ" является зарегистрированным электронным СМИ.
Свидетельство Эл ╧ 77-4461 от 2 апреля 2021 г.
Перепечатка материалов без письменного согласия редакции запрещена.
При использовании материалов газеты в Интернет гиперссылка обязательна.

Телефон редакции (812) 118-6666, 118-6555.
Адрес: 196084, СПб, ул. Коли Томчака, д. 9
e-mail:
Для пресс-релизов и новостей