Разрабатывая анимацию загрузки Windows 7

По мере нашего диалога с пользователями стала понятна заинтересованность пользователей в совершенно разных областях разработки Windows 7. Мы осведомлены о разговорах вокруг процедуры загрузки и, в частности, о том, насколько важна ее скорость. Мы также понимаем, насколько утомительно наблюдать за мерцающими огоньками индикатора активности диска при пробуждении компьютера из режима сна или гибернации. Чтобы улучшить первые впечатления от работы с ОС, мы решили переработать загрузочную последовательность. Звучит довольно просто, хотя, на самом деле, разработке новой последовательности загрузки сопутствует масса инженерных проблем. И нашей задачей было создание визуально привлекательного экрана загрузки без влияния на скорость загрузки системы. Объяснить, с какими проблемами мы столкнулись при разработке, взялась Карэн Вон ( KarenWong ), программный менеджер команды CoreUserExperience . – Стивен

Дизайн

Мы используем понятие «индивидуальность» для идентификации некоторых характеристик программного обеспечения, которые имеют эмоциональную связь с пользователями. «Свет» и «энергия» – лишь некоторые понятия, используемые нами для описания индивидуальности Windows 7. По мере разработки Windows 7 стало очевидно, что для того, чтобы продемонстрировать эти черты Windows 7, мы должны пойти гораздо дальше, чем в случае с Vista.

Мы понимаем, что с точки зрения дизайна, визуальное представление той или иной функции играет ключевую роль в восприятии качества и производительности. В связи с этим мы поставили цель сделать загрузку Windows поистине завораживающей, воспользовавшись понятиями света и энергии. Поэтому форма, в которой эти сущности выражают себя в природе, и стала для нас макетом. Такие понятия, как «биолюминесценция», «натуральный», «непритязательная красота» и «атмосфера» часто мелькали при мозговом штурме. Мы знаем, что в отдельности эти слова звучат несколько избито, но все они очень хорошо отражают задачи Windows 7.

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

clip_image002

Рис. 1. Эскизы вариантов загрузочной последовательности

Окончательный вариант дизайна в Windows 7 символизирует энергию, струящуюся в четырех направлениях в форме света, проецируемого сквозь окно (конечно же, это не просто совпадение, что логотип Windows имеет сходство с окном!). Едва различимая пульсация призвана показать прогресс – еще одна деталь, подчеркивающая индивидуальность Windows 7.

С точки зрения дизайнер эта новая загрузочная последовательность отвечает всем поставленным целям и мы рады представить ее нашими пользователями. Однако, загрузка – это нечто большее, чем просто внешняя привлекательность. С инженерной точки зрения есть ряд проблем, с которыми нам необходимо побороться, поскольку время загрузки компьютера является одной из основных характеристик, по которым пользователи оценивают ОС. Внешняя привлекательность не может ускорить процедуру загрузки. Да и, к слову сказать, многие из вас критически относятся к так называемым «рюшечкам», поэтому мы не стремились сделать загрузочную последовательность подобным украшением.

Никакого влияния на производительность

Если бы мы сохранили наследие Vista и просто бы обновили анимацию, приведя ее в соответствие со стилем Windows 7, нам не удалось бы достичь нового уровня производительности и качества, к которым стремились. На самом же деле, для того, чтобы добавить анимацию, потребовалось внести серьезные изменения в код системы.

В загрузчике Vista использовалось изображение с разрешением 640x480, соответственно, и размер файла с зеленым анимированным прогресс-баром был очень невелик. Более того, глубина цвета в загрузчике Vista тоже была мала – всего 16 разрядов на пиксель. В Windows 7 этот параметр был увеличен до 32 разрядов на пиксель, что позволило сделать анимацию более красочной. Обновления индикатора прогресса загрузки Vista осуществлялись через процессор, который восприимчив к параллельным операциям ввода/вывода, а это, в свою очередь, иногда приводило к замираниям анимации. С низким разрешением, ограниченной глубиной цвета и замираниями – мы должны были начать работу с нуля, чтобы создать что-то поистине впечатляющее.

Мы начали работу над загрузчиком Windows 7, используя в своей работе иной механизм воспроизведения анимации. Этот механизм использует указатель на кадровый буфер из прошивки (BIOS или UEFI-прошивки) и изображение с более высоким разрешением (1024 x 768). Механизм анимирует изображение параллельно с тем, как в память загружается ядро и критические драйверы. В связи с тем, что графический драйвер на данном этапе в память еще не загружен и не инициализирован, анимация осуществляется исключительно силами центрального процессора путем обновления кадрового буфера. Мы также сделали дополнительную оптимизацию – добавили процессору возможность использовать комбинированное кэширование для увеличения производительности.

В статье Майкла Фортина (Michael Fortin), посвященной производительности при загрузке, говорится о том, насколько зависимы ранние этапы загрузки от активности ввода/вывода, поскольку на этих этапах происходит загрузка ядра, файлов драйверов устройств и иных системных компонентов. Мы ограничили размер анимации до маленького фрагмента экрана чтобы избежать возникновения любых задержек на ранних этапах загрузки ОС. Большая по размерам анимация потребовала бы загрузки большего набора изображений, что незамедлительно привело бы к увеличению файлового ввода/вывода. Изображения сжимаются за счет включения растровых изображений в качестве ресурсов, которые впоследствии сжимаются с помощью WIM. Сжатие с помощью WIM уменьшает общий размер файла и, как следствие, количество необходимых операций ввода/вывода. Кроме того, снижается и необходимое для установки дисковое пространство. Анимация небольшого фрагмента экрана и использование низкой частоты кадров позволяет процессору сохранять уровень загрузки кадрового буфера на сравнительно низком уровне, и практически не увеличивать времени загрузки системы.

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

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

clip_image004

Рис. 2. Загрузка Vista

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

clip_image006

Рис. 3. Загрузка Windows 7

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

Оптимизация загрузочного кода и удаление анимации, добавленной в Vista, позволили нам добавить более высококачественную анимацию загрузки не влияющую на время загрузки ОС.

Разработка для широкого диапазона аппаратного обеспечения

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

Так, к примеру, можно заметить, что перед анимацией имеет место некоторая задержка, и продолжительность этой задержки разнится от системы к системе. Чтобы не смущать пользователей, мы включили в загрузочную последовательность текст. После задержки стартует анимация, причем стартует асинхронно с остальными операциями ввода/вывода, сопутствующими загрузке.

Также можно заметить, что размеры флага Windows на мониторах с разными размерами могут несколько отличаться. В связи с техническими ограничениями в Windows 7 загрузочная последовательность выводится в минимальном рекомендуемом разрешении – 1024x768 – и не зависит от истинного разрешения экрана. Сегодня большинство устройств настроены таким образом, чтобы подгонять загрузочную последовательность под размеры экрана, а не центрировать ее. Как следствие, загрузочная анимация растягивается на весь экран даже на тех экранах, чье соотношение сторон отличается от 1024x768. Однако мы протестировали последовательность на мониторах с наиболее распространенными соотношениями стороны, чтобы гарантировать визуальное качество.

Загрузка, перезагрузка и выход из режима гибернации

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

Персонализация

Многие пользователи спрашивают нас, возможно ли использовать иные варианты анимации для индикации процесса загрузки. Это не то, к чему мы стремились в Windows 7. Уже неоднократно говорилось о персонализации различных элементов Windows 7, в частности, о наборах тем. Причина такого решения очень проста: мы не можем гарантировать безопасность системы, разрешив на ранних этапах запуска системы загрузку в память произвольных элементов. На этапе загрузки система должна быть хорошо защищена, поскольку ни антивирусы, ни межсетевые экраны не могут обеспечить безопасности. И хотя мы верим, что все разработчики будут следовать требованиям по размеру изображений и их формату, в целях обеспечения производительности нам не хотелось бы добавлять в систему код, проверяющий соответствие требованиям. Одной из наших целей при разработке Windows 7 было обеспечение разнообразных возможностей для самовыражения пользователей. Каждый должен знать, что его компьютер является его, а не чьей-то собственностью. Надеюсь, вы поймете, почему этому элементу требуется более серьезный подход.

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

Карэн Вон (Karen Wong),

программный менеджер Core User Experience