Гибернация (операционные системы)
Гибернация (англ. hibernation, также известная как англ. suspend to disk или англ. Safe Sleep на компьютерах Macintosh[1]) — в вычислительной технике, процесс выключения компьютера с сохранением текущего состояния системы. При переходе в режим гибернации содержимое оперативной памяти (ОЗУ) копируется на жёсткий диск или в другое энергонезависимое запоминающее устройство. При последующем включении содержимое ОЗУ восстанавливается, и компьютер возвращается к состоянию, в котором находился до гибернации. Впервые гибернация была реализована и запатентована[2] компанией Compaq Computer Corporation в Хьюстоне, Техас, в 1992 году.
В операционных системах Windows 8, Windows 8.1, Windows 10 и Windows 11 используется разновидность гибернации (режим быстрого запуска, Fast Startup) по умолчанию при завершении работы[3].
Применение
После перехода в режим гибернации оборудование полностью выключается, как при обычном завершении работы[4]. Система может оставаться без питания неограниченно долго и впоследствии восстановить исходное состояние памяти. Режим гибернации наибольшее распространение получил в ноутбуках с ограниченным запасом энергии[4]. Он может автоматически активироваться при снижении заряда аккумулятора. Большинство настольных компьютеров также поддерживают гибернацию — преимущественно как общий способ энергосбережения и для быстрой замены аккумулятора. Аппаратура Google и Apple (Android, Chromebook, iOS) не поддерживает гибернацию. На оборудовании Apple с macOS режим гибернации называется англ. Safe Sleep[1].
Возможен запуск компьютера после гибернации по расписанию с помощью аппаратных часов реального времени[5].
Сравнение с режимом сна
Во многих системах поддерживается режим сна, при котором вычислительные компоненты переходят на минимальное энергопотребление, но часть энергии продолжает поступать для сохранения данных в ОЗУ и быстрого восстановления работы. К преимуществам спящего режима относится практически мгновенное возвращение к работе, в то время как при гибернации необходима загрузка данных с диска в память, что занимает больше времени и зависит от скорости накопителя. Система в режиме сна расходует незначительное количество энергии для поддержания содержимого памяти, и не может оставаться выключенной сколь угодно долго — в отличие от гибернации. Отключение питания у системы в режиме сна приведёт к потере несохранённых данных, в то время как при гибернации рисков нет: после возврата питания можно возобновить работу. Как спящий, так и выключенный/гибернированный компьютеры могут потреблять энергию в режиме ожидания, если не отключены от сети[6].
Гибернация устраняет необходимость заранее сохранять несохранённые данные и вручную восстанавливать открытые программы, документы или вкладки браузера. Как гибернация, так и спящий режим сохраняют фрагментацию памяти и эффекты длительной работы без перезагрузки, которые могут снижать производительность мобильных устройств. Поэтому многие эксперты рекомендуют регулярную перезагрузку или выключение электронных устройств.
Первая реализация
Первое коммерческое внедрение гибернации состоялось в 1992 году в ноутбуке Compaq LTE Lite 386[7]. Это стало возможным, в частности, благодаря внедрению команд сна и защищённого режима (opcode) процессора Intel 386. Реализация выполнялась на уровне ПЗУ и работала независимо от операционной системы, без необходимости в драйверах. Компьютер LTE самостоятельно реагировал на низкий заряд, предотвращая потерю данных путём использования скрытого раздела диска. Реализация позволяла сохранять и восстанавливать состояние даже во время операций с диском или сопроцессором. Управление гибернацией обеспечивалось также через графический интерфейс или пользовательские горячие клавиши. Совместимость была подтверждена с DOS, Windows 3.1, Banyan Vines и Novell Netware. Гибернация Compaq также упоминается в патенте IBM[8] за 1993 год.
Поддержка операционными системами
Первые реализации гибернации основывались на средствах BIOS, однако в современных системах она реализуется средствами самих операционных систем. В спецификации ACPI гибернация определяется как состояние S4 («режим сна S4»)[9].
Microsoft Windows
На компьютерах под управлением Windows режим гибернации доступен только при полной совместимости оборудования и драйверов с ACPI и Plug and Play. Это позволяет некоторым настольным компьютерам гибернировать на SSD даже при сбое питания и использовать даже простейшие или стареющие ИБП. Гибернацию можно вызвать через меню «Пуск» или командной строкой[10].
Windows 95 поддерживает гибернацию при наличии соответствующих драйверов и совместимого оборудования с BIOS, но только средствами производителей устройств, поскольку Windows 95 поддерживает только APM; в этом случае гибернация называется англ. Suspend-to-Disk. Windows 98 и более поздние версии уже поддерживают ACPI. Однако на ранних этапах стандарт ACPI реализовывался недостаточно полно, и многие устройства либо не были полностью совместимы, либо не имели драйверов, соответствующих WDM. Кроме того, наблюдались проблемы с файловой системой FAT32[11], что делало режим гибернации ненадёжным.
Windows 2000 — первая версия Windows, реализовавшая гибернацию на уровне операционной системы (ACPI S4), без необходимости в специальных драйверах. Для хранения содержимого ОЗУ используется скрытый системный файл hiberfil.sys в корне загрузочного раздела, размером, равным установленной памяти.
Windows Me, последняя версия в серии Windows 9x, также поддерживает гибернацию на уровне ОС и требует дискового пространства, соответствующего объёму оперативной памяти[12][13].
Windows XP существенно улучшила работу с гибернацией[14]: процессы гибернации и восстановления ускорились за счёт сжатия страниц памяти и параллельной записи на диск, очистки неиспользуемых страниц и использования DMA при вводе-выводе[15]. Файл hiberfil.sys содержит также сведения о состоянии процессора. Его структуру документировал специалист по анализу данных Маттьё Суиш на конференции Black Hat Briefings в 2008 году[16] и разработал одноимённый форензик-фреймворк для управления и конвертации этого файла в дамп памяти[17]. Позднее механизм сжатия был официально документирован компанией Microsoft[18].
Несмотря на появление в Windows XP 64-разрядной адресации (и поддержку более 4 гбайт оперативной памяти), в этой и последующих версиях (Windows Server 2003, Windows Vista, Windows Server 2008) гибернация была отключена при установке более 4 ГБ памяти из-за низкой производительности сохранения и восстановления большого объёма данных[19]. Проблема была решена в Windows 7 и Windows Server 2008 R2.
В Windows Vista появился режим англ. hybrid sleep: содержимое памяти сохраняется на диск, однако система переходит не в гибернацию, а в спящий режим. Если произойдёт сбой питания, при включении система восстановится из состояния гибернации.
В Windows 7 добавлено сжатие файла гибернации и по умолчанию установлен его размер равным 75% от физической памяти[18]. Microsoft рекомендует увеличить этот размер с помощью утилиты powercfg.exe при некоторых сценариях, когда занимаемый объём памяти превышает заданное значение. Размер файла может регулироваться в диапазоне от 50% до 100%, однако уменьшать файл не рекомендуется.
Windows 8 внедрил англ. Fast startup: при завершении работы выбран режим гибернации, но перед сохранением памяти все программы закрываются и пользователь выходит из системы[20]. По данным Microsoft, при обычной гибернации объём сохраняемых данных больше и процесс длительнее; в Fast startup сохранение быстрее благодаря закрытию всех пользовательских сессий. Для традиционного завершения работы Windows допускается удерживать клавишу Shift при выборе Завершение работы[21] или полностью отключить Fast startup в параметрах системы.
Windows 10 повторяет подход Windows 8[3] и оптимизирован для работы с твердотельными накопителями. Та же технология используется и в Windows 11.
В корпоративной среде гибернация редко применяется — её сложно включить массово на сети, не прибегая к стороннему программному обеспечению управления питанием[22]. В результате этот недостаток Microsoft критиковался как фактор огромных потерь энергии[23].
Гибернацию и файл hiberfil.sys можно отключить и удалить[24].
Сторонние программы управления питанием предлагают дополнительные функции, отсутствующие в стандартной ОС[25][26][27]; чаще всего реализуется интеграция с Active Directory, индивидуальные настройки по пользователям и устройствам, дополнительные планы управления питанием, отчёты по энергопотреблению и др.
macOS
В компьютерах Mac используется технология англ. Safe Sleep, при которой содержимое оперативной памяти сохраняется на жёстком диске при каждом переходе в спящий режим. Если питание сохраняется, Mac просыпается мгновенно. При отключении питания (например, при замене батареи без подключения к сети) система восстанавливает память с жёсткого диска[28]. Отдельной опции «Гибернация» в меню Apple нет, поскольку процесс выполняется при переходе в обычный спящий режим.
Возможность Safe Sleep появилась в моделях Mac начиная с октября 2005 года (PowerBook G4 Double-Layer SD), а поддержка реализована в Mac OS X v10.4 и выше.
Сразу после официального внедрения пользователи выпустили специальные утилиты-«хаки» для включения Safe Sleep на более старых моделях Mac с Mac OS X v10.4[29]. В классической Mac OS также существовал режим гибернации, однако впоследствии Apple отказалась от этой функции[30].
Linux
В ядре Linux функция гибернации реализована подсистемой swsusp, входящей в ядра серии 2.6. Альтернативное решение — TuxOnIce (патчи для ядра версии 3.4), обеспечивающее дополнительные возможности, например поддержку симметричной многопроцессорности и прерываний. Другой альтернативный вариант — uswsusp. Все эти решения используют термин англ. suspend-to-disk. Если применяется systemd, управление гибернацией осуществляется через него.
Гибридный спящий режим
Гибридный спящий режим сочетает преимущества обычного сна и гибернации: содержимое оперативной памяти копируется на энергонезависимое хранилище, а система переходит в спящий режим. Такой подход обеспечивает мгновенное восстановление работы даже при отключении питания, при этом сохраняются все открытые (в том числе несохранённые) файлы. В режиме гибридного сна уровень энергопотребления совпадает с обычным режимом сна, тогда как при гибернации система полностью выключается[4][31].
Примечания
- ↑ 1 2 What is safe sleep on Mac? (англ.). Apple Support. Дата обращения: 24 января 2021.
- ↑ Hibernation Patent. patents.google.com (1998). Дата обращения: 24 января 2021. Архивировано 25 января 2021 года.
- ↑ 1 2 Delivering a great startup and shutdown experience (амер. англ.). docs.microsoft.com. Дата обращения: 24 января 2021.
- ↑ 1 2 3 Sleep and hibernation: frequently asked questions. Windows 7 Online Help. Microsoft Corporation. Дата обращения: 15 октября 2011.
- ↑ systemd.timer. freedesktop.org. Дата обращения: 12 июня 2024.
- ↑ Shut down, sleep, or hibernate your PC. support.microsoft.com. Дата обращения: 15 января 2021.
- ↑ Sales Material from Compaq Computer Corp. 10000 Bit (1992). Дата обращения: 24 января 2021. Архивировано 2 января 2017 года.
- ↑ , "Hibernation file creation device and method", [1], issued 26 июля 1993
- ↑ ACPI Specification Rev 3.0b. Дата обращения: 9 ноября 2008. Архивировано 30 декабря 2008 года.
- ↑ Microsoft Help and Support – How To Put the System into hibernation or Standby from Run menu. Дата обращения: 11 февраля 2009. Архивировано 11 февраля 2009 года.
- ↑ BIOS and Hibernate Issues for FAT32 File System. Дата обращения: 15 апреля 2017.
- ↑ Interview with Nicolas Coudière, Chief Product Manager: Microsoft Windows Millennium Edition (Me). Activewin.com. Дата обращения: 26 августа 2010.
- ↑ Windows Power Management. Microsoft.com (4 декабря 2001). Дата обращения: 26 августа 2010. Архивировано 13 июля 2004 года.
- ↑ Windows Power Management: Instant PC availability and energy savings. Дата обращения: 19 апреля 2011.
- ↑ Kernel Enhancements for Windows XP. Дата обращения: 19 апреля 2011.
- ↑ BlackHat USA 2008 – Windows hibernation file for fun and profit. Дата обращения: 18 августа 2008. Архивировано 19 ноября 2008 года.
- ↑ SandMan Computer Forensics Framework. Дата обращения: 8 марта 2022. Архивировано 29 декабря 2018 года.
- ↑ 1 2 Reducing the Disk Footprint for Windows 7 Hibernation. Дата обращения: 25 октября 2012.
- ↑ You cannot put a computer that has more than 4 GB of memory into hibernation in Windows XP, in Windows Server 2003, in Windows Vista, or in Windows Server 2008. Support. Microsoft (23 сентября 2011). Дата обращения: 23 марта 2014. Архивировано 23 марта 2014 года.
- ↑ Delivering fast boot times in Windows 8. Дата обращения: 9 ноября 2011. Архивировано 8 ноября 2011 года.
- ↑ Windows 8 / Windows Server 2012: Faster Boot Process. Дата обращения: 24 мая 2018. Архивировано 24 мая 2018 года.
- ↑ Enable hibernate using group policy. Дата обращения: 19 апреля 2011.
- ↑ EcoGeek – How Windows XP Wasted $25 Billion of Energy. Дата обращения: 14 января 2009. Архивировано 27 ноября 2006 года.
- ↑ How to disable and re-enable hibernation on a computer that is running Windows; Microsoft; August 12, 2010. Дата обращения: 18 сентября 2015.
- ↑ Power Management Software for Windows Workstations. Дата обращения: 19 апреля 2011. Архивировано 26 апреля 2012 года.
- ↑ Energy Star Commercial Packages List. Дата обращения: 19 апреля 2011. Архивировано 2 ноября 2008 года.
- ↑ The Headmasters' and Headmistresses' Conference. HMC: A Practical Guide to Sustainable Building for Schools. Дата обращения: 19 апреля 2011. Архивировано 15 марта 2012 года.
- ↑ Apple Support: Progress bar appears after waking from sleep (20 февраля 2006). Архивировано 12 марта 2008 года.
- ↑ How to Safe Sleep (Hibernate) Your Mac. AndrewEscobar.com. Архивировано 5 января 2008 года.
- ↑ Sleep Memory Extension 1.0 Document and Software. Архивировано 19 августа 2007 года.
- ↑ Turn off a computer: frequently asked questions. Windows Vista Online Help. Microsoft Corporation. Дата обращения: 15 октября 2011. Архивировано 10 октября 2011 года.