БУМАЖНЫй НОМЕР
![]() |
01.09.2001
Павел Урусов
Практически
все x86-совместимые компьютеры, выпускаемые в последнее время, поддерживают ACPI
(Advanced Configuration & Power Interface - расширенный интерфейс
конфигурирования компьютера и управления питанием). Он представляет собой весьма
объемный стандарт, описывающий правила распределения прерываний (IRQ) и каналов
прямого доступа к памяти (DMA) для устройств на шинах AGP и PCI, наблюдения за
системными событиями, управления статусом компьютера и отдельных устройств и
многие другие.
Фактически ACPI - это база, на которой построен современный компьютер. Поддерживает ли компьютер ACPI или нет, определяется в основном материнской платой. Поскольку стандарту уже исполнилось четыре года, ваша материнская плата (если, конечно, она не старше 1998 года) с большой вероятностью поддерживает ACPI на аппаратном уровне, но этого мало - поддержка ACPI должна присутствовать также на уровне BIOS и операционной системы. Многие платы, даже выпущенные в 1999 году и позже, имеют BIOS либо не совместимый с ACPI, либо некорректно реализующий ряд функций. Часто проблему можно решить прошивкой новой версии BIOS, однако далеко не для всех плат можно найти обновления.
Что же касается операционной системы - на сегодняшний день возможности
стандарта ACPI наиболее полно поддерживает Windows 2000. Какие преимущества
получает при этом пользователь? Как ни странно, почти никаких: системы с ACPI и
без него не отличаются ни производительностью, ни стабильностью, ни
функциональностью. Основное новшество ACPI заключается в том, что система
распределения ресурсов для устройств на шинах AGP и PCI работает теперь немного
иначе. Трудно сказать, изменилась она в лучшую или в худшую сторону, однако одно
существенное неудобство в ней, несомненно, появилось: Windows 2000 при
использовании ACPI не дает устанавливать прерывания вручную. Порой рыдать
хочется, глядя, как добренькая операционка вешает четыре (!) устройства на
одно-единственное прерывание безо всяких уважительных
причин,
лишь потому, что оные устройства согласились терпеть насилие над собой. Очень
часто такие конфигурации оказываются работоспособными лишь условно: например,
современные видеокарты от Matrox (G400/450) относятся к подобному издевательству
крайне отрицательно, не давая жить всем остальным устройствам, сидящим на одном
прерывании с ними. В моей конфигурации, в которой видеокарта S3 Savage 4 и
звуковая карта Aristo на чипе Yamaha YMF740C вместе висят на одиннадцатом
прерывании, при интенсивном обновлении экрана звук начинает заикаться. При этом,
как я уже сказал, дать каждой плате свое - свободное! - прерывание не удается. С
другой стороны, если прерываний на все устройства не хватает, то
ACPI-совместимая система позволит избежать конфликтов с гораздо большей
вероятностью, чем обычная. Кроме того, на некоторых конфигурациях отключение
ACPI чревато потерей определенной функциональности (например, блок питания ATX
может перестать выключаться самостоятельно).
Еще одно небольшое замечание: если BIOS только прикидывается ACPI-совместимой, запустить систему с ACPI-ядром будет невозможно, более того, при установке Windows 2000 компьютер зависнет при первой же перезагрузке. Почему так происходит? Откройте «Диспетчер устройств» и в меню «Вид» (View) выберите пункт «Устройства по подключению» (Devices by connection). При установленном ACPI-ядре все устройства растут от «Microsoft ACPI-совместимой системы» (рис. 1), значит, при ошибке инициализации контроллера ACPI не удастся инициализировать и все остальные устройства компьютера. Чаще всего при этом пользователю демонстрируется синий экран с сообщением об ошибке: «Inaccessible boot device» («Недоступное загрузочное устройство»). Избежать этой напасти можно следующим образом: когда инсталлятор выдаст сообщение «Нажмите F6 для установки особого драйвера SCSI или RAID», нажмите вместо этого F5 и в появившемся списке выберите пункт «Стандартный компьютер» вместо предлагаемого по умолчанию «Компьютер с технологией ACPI».
Если система устанавливается нормально, но некоторые устройства отказываются работать, можно обойтись без переустановки, достаточно в «Диспетчере устройств» сменить драйвер компьютера на все тот же «Стандартный компьютер». Несмотря на то, что выглядит сия процедура весьма впечатляюще (происходит полное переопознание всех устройств), к отрицательным последствиям, как правило, она не приводит. Я сам неоднократно менял тип ядра в обе стороны (включая и отключая поддержку ACPI), однако после установки сервис-пака при очередной смене драйвера система хлопнулась в синий экран, сообщив о некорректной версии файла NTOSKRNL.EXE. Честно говоря, лень было копаться в MS Knowledge Base в поисках официального способа решения этой проблемы (интересно, а он там есть?), поэтому привожу решение, найденное эмпирическим путем: после смены ядра, но до перезагрузки надо переустановить сервис-пак.
Впрочем, как выяснилось, веселье на этом только начиналось. Поскольку
клавиатура и мышь тоже зависят от ACPI, при отказе от ACPI-ядра они требуют
повторного опознания и установки драйверов. В моем же случае система сначала
взялась устанавливать драйвер видеокарты, обнаружила, что он не имеет «цифровой
подписи корпорации Майкрософт, удостоверяющей подлинность драйвера», и (очевидно,
беспокоясь о моей безопасности) спросила, хочу ли я продолжить установку. Редкий
образчик заботы о пользователе, особенно если учесть, что ни клавиатура, ни мышь
в тот момент еще не функционировали. Пришлось выключать компьютер кнопкой Power
и втыкать вторую мышь в COM-порт. При следующей загрузке все устройства
опознались, как и положено, и при
помощи
мыши COM-порта я наконец-то смог нажать на кнопку OK, однако ни клавиатура, ни
PS/2-мышь заводиться упорно не хотели. Так что пришлось восстанавливать систему…
В общем, головной боли от ACPI немало, однако есть и преимущества. В частности, вы сможете назначить «засыпально-пробуждальным» кнопкам на клавиатуре и/или корпусе системного блока определенные функции. Я, например, на кнопку Power обычно вешаю гибернацию (Hibernate) компьютера. Очень удобно: вставая из-за машины, достаточно ткнуть в Power, а при следующей загрузке будет полностью восстановлено состояние системы на момент выключения (рис. 2).
Режим гибернации, кстати, заслуживает отдельного разговора. Он невероятно
удобен: при его использовании текущее содержимое оперативной памяти записывается
на жесткий диск в файл с именем Hiberfil.sys, после чего питание отключается.
При следующем включении загрузчик восстанавливает предыдущий сеанс со всеми
запущенными программами, открытыми документами и т. д. По умолчанию этот режим
отключен. Предполагаю, так сделано потому, что для его использования необходимо
дисковое пространство, равное объему оперативной памяти, а при установке
создание файла такого размера может быть нежелательным. Для того чтобы включить
гибернацию, войдите в контрольную панель «Электропитание» (Power), закладка
«Спящий режим» (Hibernate), и поставьте флажок «После приостановки перейти в
спящий режим» (рис. 3). Если закладки «Спящий режим» нет, придется смириться с
тем, что в вашей конфигурации гибернация недоступна. Впрочем, можно попытаться
отыскать виновника. Для этого по очереди отключайте драйверы различных устройств
(не забывая перезагружаться) и после каждого изменения
смотрите,
не появилась ли искомая закладка. Лично я настоятельно рекомендую сменить
устройство, не поддерживающее гибернацию: свое время дороже. Кстати, виновником
пропадания закладки «Спящий режим» может быть и любой драйвер, не имеющий
отношения к аппаратуре. Для их просмотра вызовите «Диспетчер устройств» и в меню
«Вид» выберите «Показать скрытые устройства» (Show hidden devices). Искать
следует среди драйверов, не поддерживающих plug’n’play. Например, я точно знаю,
что PGP 6.x устанавливает драйвер PGP Disk, не поддерживающий режим гибернации.
К тем же последствиям может привести использование Sentry 2020 и других
программ, устанавливающих собственные драйверы для реализации нестандартной
функциональности на достаточно низком уровне. Из служб, поставляемых вместе с
Windows 2000, гибернацию не поддерживает сервер терминалов.
Однако возможность включить режим Hibernate еще ничего не значит. Может случиться, что компьютер будет повисать при появлении сообщения «Подготовка к переходу в спящий режим» (Preparing for hibernate) или просто шлепаться в синий экран - видел я и такое. Вполне вероятна также ситуация, когда в целом гибернация функционирует, однако изредка (скажем, раз в месяц) происходит сбой при подготовке устройств при переходе в этот режим. И даже если компьютер не отказывается гибернироваться, это не гарантирует нормального восстановления конфигурации.
Если при восстановлении состояния системы происходит сбой, то при следующей перезагрузке система сообщит об этом и предложит попробовать еще раз. Альтернативой будет нормальная загрузка с полной инициализацией всех драйверов. Почему же порой возникают трудности с восстановлением текущего сеанса? Как правило, потому, что аппаратные конфигурации компьютера при переходе в режим гибернации и при выходе из него отличаются. Вообще-то говоря, любое изменение конфигурации в этом случае можно считать неразумным. Легче всего переносится изменение конфигурации дисковой подсистемы, самое худшее - когда добавленное устройство может просто не опознаться до следующей полной перезагрузки Windows. Если же вы добавляете любую плату расширения, система отреагирует на это очень плохо. Постарайтесь также не изменять настройки BIOS Setup, некоторые из них будут покруче изменения аппаратной конфигурации. Например, не стоит трогать такие пункты, как Assign IRQ for VGA, USB IRQ Status и т. д. Разумеется, изменение объема оперативной памяти тоже приведет к невозможности восстановить сеанс. Так что, прежде чем менять конфигурацию машины, подумайте о несохраненных документах…
Кстати, как ни странно, гибернация работает независимо от того, поддерживается ACPI системой или нет.
Существует еще один режим сна - Stand by, или, в русских версиях Windows,
ждущий режим. Он особенно удобен для ноутбуков: создается полная иллюзия
выключения, тогда как у настольных компьютеров чаще всего продолжает работать
вентилятор блока питания (этого можно избежать, подключив вентилятор к разъему
на материнской плате и установив в BIOS пункт Power fan in suspend в значение
off). В
отличие
от режима Hibernate, компьютер может свободно переходить из режима Stand by в
режим Full On и обратно. Допустим, если потребовался доступ к домашней машине,
когда я нахожусь не дома, можно воспользоваться модемом: компьютер пробудится от
сна (Wake on ring), я смогу установить с ним модемное соединение и сделать все,
что нужно. Для этого надо в свойствах модема (если система, конечно,
поддерживает ACPI) поставить галочку «Разрешить устройству вывод компьютера из
ждущего режима» (рис. 4). Основной недостаток режима Stand by в том, что данные
хранятся в оперативной памяти, поэтому придется позаботиться о непрерывности
электропитания, иначе вы рискуете остаться без открытых документов. Особенно это
актуально для не очень новых ноутбуков, поскольку в ждущем режиме аккумуляторы
имеют привычку разряжаться, хоть и медленнее, чем в режиме рабочем. Отсюда
вывод: при длительной транспортировке желательно полностью отключить питание
ноутбука. Кстати, для настольных компьютеров это не так актуально, потому что
даже простой ИБП при отключении света может разбудить компьютер и отдать
операционной системе приказ завершить работу.
Большая часть этих возможностей по-прежнему доступна и без ACPI, то есть в целом система управления питанием в Windows 2000 недалеко ушла от предшественницы, реализованной в Windows 98. Кардинальным новшеством можно считать лишь режим гибернации. И вывод, пожалуй, будет такой: если ваша система с ACPI не работает, можете смело его отключать - ничего существенного не потеряете. Если же все в порядке - ACPI предоставит вам несколько незначительных, но очень удобных мелочей.