Быстрая загрузка Windows 8

Когда речь идет о «фундаментальных» возможностях, начать следует с времени загрузки — ни одна другая характеристика не вызывает столько разговоров и не измеряется так тщательно. Мы разработали Windows 8 таким образом, чтобы вам не приходилось так часто перезагружаться (и мы всегда будем работать над тем, чтобы максимально сократить число перезагрузок из-за исправления исполняемого кода). Но когда перезагрузка все-таки нужна, мы хотим, чтобы она происходила как можно быстрее. Это очень глубокая тема, и над ней работает много людей. В Windows 8 мы уделили такое внимание этой области, какое не уделяли уже долгое время, и в немалой степени это обусловлено необходимостью обеспечения взаимодействия всей «экосистемы». Эту статью (первую из серии статей, посвященных фундаментальным возможностям) написал Гейб Ол (Gabe Aul), директор отдела управления программой в группе разработчиков Windows.

Немногие операции в Windows исследуются, измеряются и обсуждаются так тщательно, как загрузка. Это вполне понятно — время загрузки представляет эффективный показатель общей производительности системы, и все мы знаем, что скорость загрузки очень важна для наших клиентов. Данные исследований показывают, что 57 % пользователей настольных ПК и 45 % пользователей ноутбуков завершают работу компьютеров, а не переводят их в спящий режим. То есть примерно половина всех пользователей завершают работу компьютеров, а не переводят их в спящий режим.

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

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

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

В Windows 7 мы внесли много улучшений в способ загрузки, в том числе параллельную инициализацию драйверов устройств и службы, запускаемые определенными событиями, но было очевидно, что нам нужно использовать еще более креативный (и менее традиционный) подход, чтобы добиться скорости загрузки, хотя бы приблизительно соответствующей всем ожиданиям.

Нашим решением стал новый быстрый режим запуска, представляющий собой гибрид традиционной «холодной» загрузки и возобновления работы после гибернации.

Перед тем как я перейду к подробностям, будет полезно вспомнить, как завершение работы и загрузка реализованы в Windows 7.

Процедура завершения работы:

  1. Пользователь инициирует завершение работы, выбирая параметр «Выключить компьютер» в меню «Пуск» или нажимая кнопку питания, либо приложение инициирует завершение работы, вызывая функцию интерфейса API, например ExitWindowsEx() или InitiateShutdown().
  2. Windows транслирует сообщения запущенным приложениям, позволяя им сохранить данные и настройки. Приложения также могут запросить немного дополнительного времени на завершение своей работы.
  3. Windows закрывает сеансы каждого пользователя, вошедшего в систему.
  4. Windows отправляет сообщения службам, уведомляя их о начале завершения работы, а затем останавливает их. Упорядоченные службы с зависимостями отключаются последовательно, а остальные — параллельно. Если служба не отвечает, ее работа завершается принудительно.
  5. Windows передает сообщения устройствам, информируя их о необходимости завершения работы.
  6. Windows закрывает системный сеанс (который также называют «сеансом 0»).
  7. Windows записывает все данные, ожидающие записи, на системный диск, чтобы обеспечить их полное сохранение.
  8. Windows передает сигнал через интерфейс ACPI системе для отключения компьютера.

Процедура загрузки:

  1. После нажатия кнопки включения питания микропрограммное обеспечение компьютера запускает тест POST и загружает настройки. Этот предварительный процесс завершается после обнаружения допустимого системного диска.
  2. Микропрограммное обеспечение считывает основную загрузочную запись (MBR) и запускает программу Bootmgr.exe. Bootmgr.exe находит и запускает загрузчик Windows (Winload.exe) в загрузочном разделе Windows.
  3. Загружаются драйверы, необходимые для запуска ядра Windows, после чего начинает работать ядро, загружая в память куст системного реестра и дополнительные драйверы, отмеченные как BOOT_START.
  4. Ядро передает управление процессу диспетчера сеансов (Smss.exe), который инициализирует системный сеанс, загружает и запускает устройства и драйверы, не отмеченные как BOOT_START.
  5. Запускается Winlogon.exe, отображается экран входа пользователя в систему, диспетчер управления службами запускает службы, и выполняются заданные сценарии групповой политики. Когда пользователь входит в систему, Windows создает сеанс для этого пользователя.
  6. Запускается Explorer.exe, система создает процесс диспетчера окон рабочего стола (DWM), который инициализирует рабочий стол и отображает его.

На самом деле этот процесс намного более детальный; дополнительные сведения доступны здесь: http://msdn.microsoft.com/en-us/windows/hardware/gg463386

Главное — помнить, что при традиционном завершении работы мы закрываем все пользовательские сеансы, а в сеансе ядра мы закрываем службы и устройства для подготовки к полному выключению.

И вот основное отличие Windows 8: как и в Windows 7, мы закрываем пользовательские сеансы, но вместо того чтобы закрывать сеанс ядра, мы переводим его в режим гибернации. По сравнению с полной гибернацией, при которой сохраняется множество страниц памяти, используемых приложениями, объем данных гибернации сеанса 0 намного меньше, и они значительно быстрее записываются на диск. Если вы не знакомы с гибернацией, то в двух словах — система сохраняет свое состояние и содержимое памяти в файле на диске (hiberfil.sys), а затем читает его при возобновлении работы и восстанавливает содержимое памяти. Такой метод значительно сокращает время загрузки, так как чтение файла гибернации и повторная инициализация драйверов происходят значительно быстрее в большинстве систем (на 30-70 % быстрее в большинстве протестированных нами систем).

Пример результатов тестирования от System Integration.

Загрузка происходит быстрее, так как гибернация системного сеанса занимает значительно меньше времени, чем полная инициализация системы. Загрузка также осуществляется быстрее, потому что мы добавили новую возможность многоэтапного возобновления работы, которая позволяет использовать все ядра многоядерной системы параллельно для распределения чтения файла гибернации и восстановления содержимого памяти. К сведению тех, кто предпочитает гибернацию: такой метод также позволяет ускорить возобновление работы и при использовании гибернации.

Представление разных этапов «холодной» и быстрой загрузки.

Возможно, следует упомянуть о том, как обрабатывается файл гибернации (если вы сейчас читаете эту статью и выполните команду dir /s /ah hiberfile.sys, вы узнаете, как много места на диске он занимает). По умолчанию размер файла гибернации составляет 75 % от объема физической оперативной памяти. Этот файл по сути резервирует место для данных гибернации, которые будут записаны при переходе системы в режим гибернации. Обычно используется намного меньше места на диске, а при использовании нашей быстрой загрузки размер файла обычно составляет около 10-15 % от объема физической оперативной памяти, но это зависит от установленных драйверов, используемых служб и других факторов. Кроме того, система обрабатывает файл гибернации не совсем так, как другие файлы на диске. Например, служба моментального снимка тома игнорирует его (что позволяет слегка увеличить производительность). Гибернацию можно отключить и освободить занимаемое место на диске, выполнив команду powercfg /hibernate off в командной строке с повышенными привилегиями. Но помните: если сделать это, вы полностью отключите гибернацию, в том числе некоторые полезные функции, такие как быстрая загрузка и гибридный спящий режим, которые позволяют настольным системам одновременно переходить в спящий режим и режим гибернации, чтобы при отключении питания можно было возобновить работу из состояния гибернации. Можно также выполнить команду powercfg /hibernate /size и указать значение от 0 до 100 для объема физической оперативной памяти в процентах, зарезервированной для файла гибернации. Но будьте осторожны! Если указать слишком маленький размер, гибернация может привести к сбою. В общем случае я рекомендую использовать значение по умолчанию, если вы не работаете в системе с ограниченным местом на диске.

Еще одна важная отличительная черта быстрой загрузки Windows 8 состоит в том, что, хотя мы не и проводим полное перечисление драйверов устройств Plug & Play, мы все равно инициализируем драйверы в этом режиме. Те из вас, кто предпочитает «холодную» загрузку для «освежения» драйверов и устройств, будут рады узнать, что такой процесс действует и в новом режиме, хотя он и отличается от обычной «холодной» загрузки.

Новый режим быстрой загрузки дает преимущества почти во всех системах, как с традиционным жестким диском, так и с твердотельным диском (SSD-диском), но для новых систем с быстрыми SSD-дисками скорость загрузки просто потрясает!

Конечно, бывают ситуации, когда требуется полное выключение компьютера, например если вы открываете системный блок, чтобы добавить или сменить оборудование. В пользовательском интерфейсе есть параметр, позволяющий вернуться в режим «холодной» загрузки Windows 7, или же (так как это будет происходить довольно редко) можно использовать новый параметр /full с командой shutdown.exe. В командной строке выполните следующую команду: shutdown /s /full / t 0, чтобы немедленно полностью выключить компьютер. Кроме того, если выбрать команду «Перезагрузка» в пользовательском интерфейсе, система полностью завершит работу, после чего будет осуществлена «холодная» загрузка.

Загрузкой системы в основном занимается группа разработчиков платформы ядра, но в случае Windows 8 несколько групп объединились, чтобы внести изменения в ОС для поддержки нового режима и некоторых других изменений, о которых мы с вами скоро поговорим. Нам очень нравится скорость загрузки Windows 8, и мы хотим, чтобы вы сами опробовали новый режим и рассказали нам, что вы об этом думаете.

Автор статьи: Гейб Ол

Реклама

Добавить комментарий

Заполните поля или щелкните по значку, чтобы оставить свой комментарий:

Логотип WordPress.com

Для комментария используется ваша учётная запись WordPress.com. Выход /  Изменить )

Google+ photo

Для комментария используется ваша учётная запись Google+. Выход /  Изменить )

Фотография Twitter

Для комментария используется ваша учётная запись Twitter. Выход /  Изменить )

Фотография Facebook

Для комментария используется ваша учётная запись Facebook. Выход /  Изменить )

w

Connecting to %s