Гибернация (операционные системы)

Материал из Википедии — свободной энциклопедии
Перейти к: навигация, поиск

Гибернация (англ. hibernation — «зимняя спячка») — энергосберегающий режим операционной системы компьютера, позволяющий сохранять содержимое оперативной памяти на энергонезависимое устройство хранения данных (жёсткий диск) перед выключением питания. В отличие от ждущего режима, при использовании гибернации подача электроэнергии полностью прекращается. При включении содержимое памяти восстанавливается (загружается с диска в память), и пользователь может продолжить работу с того же места, на котором он остановился, так как все запущенные ранее программы продолжают выполняться.

В русскоязычной версии Windows XP функция гибернации называется «Спящий режим». Начиная с Windows Vista, этот режим носит название «Гибернация». Кроме того, в Windows Vista появилась дополнительная функция «гибридный спящий режим», при которой содержимое ОЗУ копируется на диск, но питание компьютера не отключается. Таким образом, данные пользователя не будут потеряны в случае отключения электропитания, но в то же время «пробуждение» занимает меньше времени.

В OS X спящий режим объединён со ждущим. При этом обычный спящий режим OS X соответствует гибридному в Windows Vista, а при низком заряде аккумулятораноутбуках) используется режим «глубокого сна», аналогичный гибернации, при котором питание компьютера отключается полностью.

В KDE4 и GNOME гибернацию можно вызвать через управление электропитанием. При этом должен быть установлен пакет pm-utils.

Преимущества и недостатки[править | править вики-текст]

Преимущества
  • Быстрое окончание/начало работы (не тратится время на остановку/запуск драйверов и программ).
  • Возможность автоматизации (гибернация может выполняться автоматически, без участия пользователя, например, при достижении низкого уровня заряда у батареи ноутбука).
  • Отсутствие интерактивности (пользователю не нужно отвечать на запросы о сохранении документов).
Недостатки
  • Необходимость наличия свободного места на диске (содержимое памяти и данные о состоянии оборудования занимают большое количество дискового пространства, примерно равное объёму доступной или используемой памяти).
  • При больших размерах памяти и использовании HDD выход из спящего режима занимает больше времени, чем при использовании SSD.
  • При больших размерах памяти и установке ОС на SSD для редко используемого файла гибернации резервируется большой размер дискового пространства. При этом изменить расположение файла гибернации в Windows невозможно из-за особенностей загрузчика ядра, который способен видеть только тот раздел диска, на который установлен загрузчик.
  • Некоторые драйверы и программы имеют проблемы со спящим режимом. Например, Miranda IM версий до 0.8 выводила сообщение о невозможности подключения (но после этого нормально подключалась к серверу). Logitech SetPoint с мышью Logitech G5 переставляет уровень чувствительности, но «забывает» обновить индикацию этого уровня.
  • Если содержимое диска изменится, то часть данных, которые находятся в виртуальной памяти (дисковый кэш, FAT, таблицы дескрипторов и т. д.) окажутся в устаревшем состоянии. По этой причине в ОС Linux при монтировании разделов, используемых ОС Windows, выводится предупреждение. Кроме того, при включении компьютера не рекомендуется использовать мультизагрузку.
  • Проблемы с выходом из спящего режима могут возникнуть при сбое аппаратного обеспечения машины (BIOS, HDD).
  • Шифрование файла спящего режима (как и файла подкачки), хранящего копию содержимого памяти, осуществляется не во всех операционных системах (исключение — OS X). Таким образом, использование спящего режима может оказаться небезопасным.

Гибернация отдельных программ[править | править вики-текст]

В общем случае, принцип гибернации не может быть применён к отдельным программам[1][2]. Дело в том, что некоторые операции над файлами могут единовременно производиться только одной программой (см. мьютекс). Так, операция «открытие файла для записи» предполагает, что никакая другая программа не будет обращаться к данному файлу.

Рассмотрим следующий сценарий:

  1. программа открывает файл, записывает в него информацию;
  2. в это время её отправляют в гибернацию;

Если файл будет заблокирован — достаточно удалить файл гибернации, и мы получим неудаляемый файл. Если нет — другой процесс может изменить файл, что может привести к ошибке «Недопустимая операция» или порче данных. Подобные проблемы возникают и с другими объектами ОС — например, сообщениями о размонтировании диска: программа, находясь в спящем режиме, просто не сможет на них отреагировать.

Интересные факты[править | править вики-текст]

  • Поддержка гибернации добавлена в ОС Windows начиная с Windows 95, которая распространялась с 1995 года.
  • ОС Eumel[en], которая распространялась с 1980 года, поддерживала orthogonal persistence[en][3], который заключался в следующем: ОС периодически сохраняла на диск своё состояние (содержимое памяти и данные о состоянии устройств); после перебоев в подаче электроэнергии ОС восстанавливалась из сохранённого состояния; программы продолжали работать так, будто бы сбоя не происходило; терялись только изменения, внесённые с момента последнего сохранения.

Примечания[править | править вики-текст]

Ссылки[править | править вики-текст]