5 января 2001-го

1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31

Хибер. Нате

Когда-то давно, когда на Земле еще правил DOS, я задумал написать программу, которая могла бы сбрасывать на диск состояние компьютера и восстанавливать его по запросу. Тогда я был активным геймером и задуманная программа должна была помочь сохранить состояние любой игры в любом месте.

Жаль, но в то время эта задача была практически невыполнимой, а то бы я, возможно, уже сказочно разбогател. :) Или не я. Вряд ли мне принадлежит первенство в рождении этой идеи. Как показала практика, трудность не в сохранении дампа базовой (как тогда это называлось) памяти и содержимого XMS, да и с сохранением состояния контролера клавиатуры и прерываний (как не странно некоторые игры перепрограммировали и то и другое) я бы справился. Мне помешал защищенный режим и оставшееся оборудование.

Сначала на моем пути встал EMM386, этот менеджер VCPI- и EMS-памяти переводил процессор в защищенный режим (protected mode). Программировать под него я не умел, но из того, что знал, я сделал, может быть ошибочный, вывод — я не смогу после восстановления состояния компьютера сделать «так как было». Я решил на защищенный режим «забить» и загружать содержимое EMS уже после старта DOSа и самого EMM386. VCPI я не трогал, да он нигде и не использовался.

Потом появился DOS4GW. Его требовали DOOM и другие игрушки. Эта библиотека (или как это еще назвать?) так же использовала для своих темных дел защищенный режим. Я узнал слово «DPMI». С DPMI так же легко как с EMS я работать не умел, не было документации. Это стало первым гвоздем в гроб моей идеи.

Вторым, и последующими гвоздями, оказалось оборудование. Слово драйвер тогда рождало несколько другие ассоциации, ни о какой универсализации работы с оборудованием речи не шло. Так что нелегкий труд по опросу и сохранению состояния какой-нибудь карточки ложился целиком на плечи программиста. Для примера, со своей видеокарточкой, монстром от фирмы Trident с 512К на борту я бы еще как-то справился, но поддержка видеокарт всех фирм и моделей — задача для меня одного непосильная. То же и с другими компонентами.

Шли годы…

Незаметно появилась и вошла в нашу жизнь ОС Windows. Операционная система встала над защищенным режимом. Слово «драйвер» получило другой смысл, прослойка между операционкой и оборудованием… Слова XMS, EMS и VCPI стали забываться, а DPMI — расшифровываться по-другому. Появился ACPI и, как его часть, «OnNow». И Windows2000, как первая, по крайней мере в линии Windows, которая умеет его поддерживать. Ну хотя бы часть — ту что, «suspend-to-disk». И при условии поддержки ACPI оборудованием. Мы, не все конечно, узнали слово «Hibernate».

Идея «suspend-to-disk» или, как он называется в W2K, «Hibernate» недалека от того, что придумал в свое время я. На диске создается файл, куда после входа в этот режим за 10—20 секунд сбрасывается все, включая содержимое памяти машины и состояние его многочисленных компонентов, после чего предлагается нажать на кнопку «Откл.». После включения, компьютер говорит «Hibernating» и примерно за полминуты (у кого как) загружается. WinAmp продолжает играть с того места, где вы его «схибернатили», Word показывает содержимое ранее открытого документа, браузер — страницу… В общем все так, как будто компьютер и не отключали.

«Здорово», — подумал я, и отправился в недра настроек своей W2K — искать, где у меня спрятан этот самый режим. Найти с первого раза мне его не удалось. Пришлось идти в большой Интернет и читать. Все оказалось просто. Оказывается, по умолчанию возможность использования этого режима отключена. Так исторически сложилось. А для его включения необходимо выполнение двух условий:

  • все оборудование, включая материнскую плату, должно уметь работать с ACPI;
  • BIOS, который на этот самой плате стоит так же должен знать, что это такое.

Выяснить, как дело обстоит у вас просто — достаточно зайти на «Панель управления» («Control Panel»), там найти «Управление энергопитанием» («Power») и посмотреть, есть ли у вас закладка «Hibernate». Если есть — включайте режим, в списке «Lock-Restart-Shutdown» появится новый элемент. Если нет, вам не повезло, но не отчаивайтесь, возможно, не все еще потеряно, перейдите по первой ссылке внизу страницы и попробуйте поэкспериментировать.

Мне повезло. У меня машина «белой сборки» IBM-IntelliStation-чего-то-там и «Hibernate», теперь одна из причин, которая примеряет меня с существованием Windows 2000. :)

Ссылки по теме

Hibernate и Win2000
Hibernate и Windows 98
Технология Hibernate и Win2000