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

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

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

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

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

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

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

Преимущества
  • Быстрое окончание/начало работы (не тратится время на остановку/запуск драйверов и программ).
  • Возможность автоматизации (гибернация может выполняться автоматически, без участия пользователя, например, при достижении низкого уровня заряда у батареи ноутбука).
  • Отсутствие интерактивности (пользователю не нужно отвечать на запросы о сохранении документов).
  • От аппаратного обеспечения и его драйверов требуется минимальная поддержка ACPI (если это программная гибернация, как в Windows 2000+).
Недостатки
  • Необходимость наличия свободного места на диске (содержимое памяти и данные о состоянии оборудования занимают большое количество дискового пространства, примерно равное объёму доступной или используемой оперативной памяти).
  • При больших размерах памяти и установке ОС на 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], который заключался в следующем: ОС периодически сохраняла на диск своё состояние (содержимое памяти и данные о состоянии устройств); после перебоев в подаче электроэнергии ОС восстанавливалась из сохранённого состояния; программы продолжали работать так, будто бы сбоя не происходило; терялись только изменения, внесённые с момента последнего сохранения.

См. также[править | править код]

Ссылки[править | править код]

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

  1. Why can’t the system hibernate just one process? Архивная копия от 2 февраля 2010 на Wayback Machine — Реймонд Чен
  2. Почему система не может отправить в гибернацию только один процесс Архивная копия от 3 июля 2012 на Wayback Machine?
  3. Liedtke, Jochen (Декабрь 1993 года). "A persistent system in real use—experiences of the first 13 years" (PDF). Proceedings of the 3rd International Workshop on Object Orientation in Operating Systems (IWOOOS). Эшвилл, Северная Каролина, США. pp. 2‑11. Архивировано из оригинала (PDF) 10 июля 2015. {{cite conference}}: Проверьте значение даты: |date= (справка)