3. Гибернация (Hibernate S4) и Быстрый запуск (Fast Startup)
Гибернация позволяет полностью обесточить компьютер с сохранением состояния операционной системы на диск в файл hiberfil.sys. Режим Быстрого запуска (Fast Startup / Hybrid Shutdown) использует архитектуру гибернации для ускорения старта системы, сохраняя преднастроенное ядро и службы вместо их повторной медленной инициализации.
3.1 Архитектурная схема сохранения и восстановления снимка S4
3.2 Декомпилированный C-код создания снимка: PopSaveHiberContext
PopSaveHiberContextntoskrnl.exe
IRQL: HIGH_LEVEL (15)Kernel Hibernation Image SerializationInternal
__int64 __fastcall PopSaveHiberContext(ULONG_PTR BugCheckParameter3) Главная процедура сериализации памяти ядра и пользовательского пространства в файл `hiberfil.sys`. Инициализирует минипорт аварийного дампа (`dump_stornvme.sys` / `dump_storahci.sys`) для записи в обход стандартного стека файловой системы, организует параллельное сжатие страниц ОЗУ всеми доступными ядрами CPU и записывает заголовок `PO_MEMORY_IMAGE_HEADER`.
▶PopSaveHiberContextntoskrnl.exe__fastcallINTERNAL
Развернуть псевдокод
Сжатие и запись страниц физической памяти в hiberfil.sys через crashdump-минипорт
3.3 Архитектурные различия: Полный Hibernate (S4) vs Быстрый запуск (Fast Startup)
| Параметр | Полная гибернация (S4) | Быстрый запуск (Fast Startup / Hybrid) |
|---|---|---|
| Пользовательские сессии (Session 1+) | Полностью сохраняются в снимке со всеми открытыми окнами | Завершаются (ExitWindowsEx), пользователь выгружается |
| Сессия системных служб (Session 0) | Сохраняется в активном состоянии | Переводится в состояние сна и сохраняется |
Ядро и драйверы (ntoskrnl.exe) | Сохраняются в состоянии сна | Сохраняются в инициализированном состоянии |
Размер снимка в hiberfil.sys | Большой (объем всей используемой RAM) | Компактный (только ядро + службы, ~1.5–3 ГБ) |
| Поведение при включении | winresume.efi восстанавливает сессию пользователя | winresume.efi восстанавливает ядро и открывает экран блокировки LogonUI.exe |
| Пропуск фаз инициализации ядра | Да (InitBootProcessor и Phase1InitializationDiscard не вызываются) | Да (старт за 3–5 секунд вместо 15–25 секунд) |