Основные этапы загрузки компьютера. Загрузка Windows XP

Загрузка операционной системы

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

Диск (жесткий, гибкий или лазерный), на котором находятся файлы операционной системы и с которого производится ее загрузка, называется системным .

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

Самотестирование компьютера. В состав компьютера входит энергонезависимое постоянное запоминающее устройство (ПЗУ), содержащее программы тестирования компьютера и первого этапа загрузки операционной системы - это BIOS (Basic Input/Output System - базовая система ввода/вывода).

После включения питания компьютера или нажатия кнопки Reset на системном блоке компьютера или одновременного нажатия комбинации клавиш {Ctrl+Alt+Del} на клавиатуре процессор начинает выполнение программы самотестирования компьютера POST (Power-ON Self Test). Производится тестирование работоспособности процессора, памяти и других аппаратных средств компьютера.

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

Для установки правильной даты и времени, а также внесения изменений в конфигурацию аппаратных средств компьютера в процессе выполнения самотестирования необходимо нажать клавишу {Del}. Загрузится системная утилита BIOS Setup, имеющая интерфейс в виде системы иерархических меню. Пользователь может установить новые параметры конфигурации компьютера и запомнить их в специальной микросхеме памяти, которая при выключенном компьютере питается от батарейки, установленной на системной плате. В случае выхода из строя батарейки конфигурационные параметры теряются и компьютер перестает нормально загружаться.

После проведения самотестирования специальная программа, содержащаяся в BIOS, начинает поиск загрузчика операционной системы. Происходит поочередное обращение к имеющимся в компьютере дискам (гибким, жестким, CD-ROM) и поиск на определенном месте (в первом, так называемом загрузочном секторе диска) наличия специальной программы Master Boot (программы-загрузчика операционной системы).

Если диск системный и программа-загрузчик оказывается на месте, то она загружается в оперативную память и ей передается управление работой компьютера. Программа ищет файлы операционной системы на системном диске и загружает их в оперативную память в качестве программных модулей (рис. 4.20).


Рис. 4.20. Процесс загрузки операционной системы

Если системные диски в компьютере отсутствуют, на экране монитора появляется сообщение "Non system disk" , и компьютер "зависает", то есть загрузка операционной системы прекращается и компьютер остается неработоспособным.

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

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

Вопросы для размышления

1. Каковы основные этапы самотестирования компьютера?

2. Что хранится в микросхеме конфигурационной памяти компьютера?

3. Каковы основные этапы загрузки операционной системы?

BIOS (Base Input/Output System) представляет собой специальное программное обеспечение , которое встроено в микроконтроллер на материнской плате, переводится с английского языка как основная система ввода-вывода. Данный программный код обеспечивает взаимодействие операционной системы с оборудованием, позволяет совместить аппаратные различия в компьютерном оборудовании.

Какова роль BIOS?

При первоначальной загрузке компьютера БИОС с помощью встроенных программных алгоритмов тестирует аппаратное оборудование на предмет работоспособности. Микроконтроллер посылает инструкции для запуска к каждому компоненту компьютера. Взамен он должен в обязательном порядке получить ответ от устройства. Если BIOS ответ не получает, система сообщает об этом пользователю посредством выдачи сообщения на монитор или звукового сигнала.

Без данного ПО невозможна работа компьютера. Также операционная система не запустится, если конфигурация БИОС настроена неправильно, или сбились настройки в результате системных неполадок. Системные настройки BIOS позволяют выполнить:

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

Какие версии BIOS бывают?

Данное программное обеспечение классифицируют по названию компаний-производителей. Единого стандарта интерфейса не существует. Версия указывается при первоначальной загрузке компьютера. Основными производителями данного продукта являются:

  • Award Software;
  • American Megatrends Inc (AMI);
  • FirmWorks;
  • General Software Inc. (OEM-версии BIOS для 32-разрядных систем);
  • Microid Research (MrBIOS);
  • System Soft (для мобильных устройств);
  • Phoenix Technologies (для Windows CE).

Как попасть в BIOS?

Информацию, как попасть в БИОС, можно считать в процессе загрузки компьютера. Чаще всего выдается системой запись вида: Press DEL to enter SETUP. В этом случает для входа в систему необходимо нажать клавишу DELETE в процессе загрузки компьютера. В некоторых случаях для того чтобы войти в меню BIOS, необходимо нажать определенные сочетания клавиш. Чаще всего используются F1, F2, F10, ESC или сочетания Ctrl+Alt+Ins, Ctrl+Alt+Esc.

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

Меню настроек BIOS

Наиболее распространены системы AMI BIOS и Award BIOS . Версия AMI BIOS имеет три раздела:

  • Main позволяет менять настройки системного времени. Даты, приоритет съемных носителей, содержит информацию о системе;
  • Advanced включает параметры работы центрального процессора и параметры конфигурации встроенной аппаратуры, настройки USB-портов и питания;
  • Boot содержит параметры загрузки, в том числе и настройки безопасности в процессе загрузки.

Меню Award BIOS имеет более сложную конфигурацию. Система содержит такие разделы:

  • Standart CMOS Features позволяет настраивать системную дату и время, тип используемого дисковода, а также характеристики имеющихся накопителей.
  • Advanced BIOS Features включает множество опций, в частности, порядок опроса накопителей при загрузке, включение/отключение многопоточности процессора, параметры взаимодействия ядер, информацию о состоянии жестких дисков . Данный раздел позволяет оптимизировать работу оперативной памяти .
  • Advanced Chipset Features содержит важные настройки работы встроенного оборудования: центрального процессора, оперативной памяти и системных шин передачи данных. Изменять данные настройки самостоятельно не рекомендуется.
  • Integrated Peripherals отвечает за настройку компонентов, встроенных в материнскую плату (USB-контроллер, видеокарта и звуковая карта, сетевой контроллер и различные порты).

В общем виде меню BIOS включает такие разделы (возможные названия блоков указаны в скобках):

  • общие параметры (STANDARD CMOS SETUP или MAIN);
  • свойства BIOS (ADVANCED или BIOS FEATURES SETUP);
  • свойства чипсетов (CHIPSET FEATURES SETUP или Chip Configuration);
  • свойства интегрированного оборудования (INTEGRATED PERIPHERALS или I/O Devices Configuration);
  • свойства слотов PCI (PNP/PCI CONFIGURATION или PCI CONFIGURATION);
  • управление питанием (POWER MANAGMENT SETUP или POWER);
  • пароли системы (SUPERVISOR PASSWORD или USER PASSWO RD);
  • сохранение и восстановление настроек (SAVE SETUP, LOAD SETUP DEFAULTS или LOAD BIOS DEFAULT);
  • выход из конфигурации (EXIT).

Этот небольшой кусок информации, в принципе все что нужно на первом этапе знакомства с БИОСом компьютера, мы продолжим цикл статей про сей инструмент и расскажем много интересной информации. Спасибо.

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

В отличие от BIOS, код UEFI и вся ее служебная информация может храниться не только в специальной микросхеме, но и на разделах как внутренних, так и внешних жестких дисков, а так же сетевых хранилищах. В свою очередь, тот факт, что загрузочные данные могут размещаться на вместительных накопителях, позволяет за счет модульной архитектуры наделять EFI богатыми функциональными возможностями. Например, это могут быть развитые средства диагностики, или полезные утилиты , которые можно будет использовать как на этапе начальной загрузки ПК, так и после запуска ОС.

Ну а как же происходит загрузка компьютера с UEFI, если на нем используются неподдерживаемая операционная система (WindowsXP, 32-битная Windows 7) или файловая разметка (MBR)? Для таких случаев в новый загрузочный интерфейс встроен модуль поддержки совместимости (Compatibility Support Module), по сути, представляющий из себя традиционную BIOS. Именно поэтому, можно видеть, как многие современные компьютеры , оснащенные системными платами с UEFI, загружается традиционным способом в режиме эмуляции BIOS. Чаше всего это происходит потому, что их владельцы продолжают использовать разделы HDD с традиционной MBR и не хотят переходить к разметке GPT.

Заключение

Совершенно очевидно, что, в отличие от традиционной BIOS, интерфейс UEFI способен на много большее, чем просто процесс загрузки. Возможность запуска рабочих сервисов и приложений, как на начальном этапе загрузки ПК, так и после запуска операционной системы открывает широкий спектр новых возможностей, как для разработчиков, так и конечных пользователей.

Но при этом говорить о полном отказе в ближайшее время от базовой системы ввода/вывода пока преждевременно. В первую очередь нужно вспомнить, что до сих пор большинство компьютеров находятся под управлением WindowsXP и 32-битной Windows 7, которые не поддерживаются UEFI. Да и жесткие диски, размеченные по стандарту GPT в большинстве своем можно встретить разве что в новых моделях ноутбуков на базе Windows 8.

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

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

Решением данного парадокса является использование специальной маленькой компьютерной программы , называемой начальным загрузчиком , или команд расположенных в постоянной памяти (например на IBM PC - команд перезагрузки без какой бы то ни было помощи). Данное программное обеспечение может обнаруживать устройства, подходящие для загрузки, и загружать со специального раздела самого выбранного устройства (чаще всего загрузочного сектора) данных устройств загрузчик ОС .

Начальные загрузчики должны соответствовать специфическим ограничениям, особенно это касается объёма. Например, на IBM PC загрузчик первого уровня должен помещаться в первых 446 байт главной загрузочной записи , оставив место для 64 байт таблицы разделов и 2 байта для сигнатуры AA55, необходимой для того, чтобы BIOS выявил сам начальный загрузчик.

История

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

Псевдо-ассемблерный код начального загрузчика может быть столь же простым, как и следующая последовательность инструкций:

0: записать в регистр P число 8 1: проверить что устройство считывания с перфолент может начинать считывание 2: если не может, перейти к п. 1 3: прочитать байт с устройства считывания с перфолент и записать его в аккумулятор 4: если перфолента закончилась, перейти к п. 8 5: записать значение, хранимое в аккумуляторе, в оперативную память по адресу, хранящемуся в регистре P 6: увеличить значение регистра P на единицу 7: перейти к п. 1

Данный пример основан на начальном загрузчике одного из миникомпьютеров , выпущенного в 1970-х годах фирмой Nicolet Instrument Corporation.

0: записать в регистр P число 106 1: проверить что устройство считывания с перфолент может начинать считывание 2: если не может, перейти к п. 1 3: прочитать байт с устройства считывания с перфолент и записать его в аккумулятор 4: если перфолента закончилась, перейти к п. 8 5: записать значение, хранимое в аккумуляторе, в оперативную память по адресу, хранящемуся в регистре P 6: уменьшить значение регистра P на единицу 7: перейти к п. 1

Длина загрузчика второго уровня была такой, что последний байт загрузчика изменял команду, расположенную по адресу 6. Таким образом, после выполнения пункта 5 стартовал загрузчик второго уровня. Загрузчик второго уровня ожидал заправки в устройство считывания перфолент длиной перфоленты, содержащей операционную систему. Различием между загрузчиком первого уровня и загрузчиком второго уровня были проверки на ошибки считывания с перфоленты, которые часто встречались в то время, и, в частности, на используемых в данном случае телетайпах ASR-33.

Некоторые операционные системы, наиболее характерными их которых являются старые (до 1995 года) операционные системы компьютеров Apple Computer, настолько тесно связаны с аппаратным обеспечением компьютеров, что на данных компьютерах невозможно загрузить какую либо другую операционную систему. В данных случаях обычно разрабатывается начальный загрузчик, который работает как загрузчик стандартной ОС , а затем передает управление альтернативной операционной системе. Apple использовала данный способ для запуска A/UX версию Unix , а затем он использовался различными бесплатными операционными системами.

Устройства, инициализируемые BIOS

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

Загрузочная последовательность стандартного IBM-совместимого персонального компьютера

Загружается персональный компьютер

Ссылки

Wikimedia Foundation . 2010 .

Смотреть что такое "Загрузка операционной системы" в других словарях:

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

    У этого термина существуют и другие значения, см. Ядро. Ядро центральная часть операционной системы (ОС), обеспечивающая приложениям координированный доступ к ресурсам компьютера, таким как процессорное время, память и внешнее аппаратное… … Википедия

    Для термина «Планировщик задач» см. другие значения. Планирование выполнения задач одна из ключевых концепций в многозадачности и многопроцессорности как в операционных системах общего назначения, так и в операционных системах реального… … Википедия

    Это форма распространения системного программного обеспечения. Наличие дистрибутивов вызвано тем, что форма программного обеспечения, используемая для его распространения, почти никогда не совпадает с формой программного обеспечения работающей… … Википедия

    Доверенная загрузка функция персонального компьютера для воспрепятствования несанкционированному запуску пользователя, загрузке операционной системы (ОС) и получению возможности доступа к конфиденциальной информации. Обеспечение… … Википедия

    Эту статью следует викифицировать. Пожалуйста, оформите её согласно правилам оформления статей … Википедия

    Windows XP стартует в интернет телефон автомате В информатике начальной загрузкой называется сложный и многошаговый процесс запуска компьютера. Загрузочная последовательность это последовательность действий, которые должен выполнить компьютер для … Википедия

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

    Основная и дублирующая микросхемы ПЗУ материнской платы Gigabyte, содержащие BIOS компании AWARD. BIOS (англ. basic input/output system «базо … Википедия

    Prefetcher компонент операционной системы Microsoft Windows, ускоряющий процесс её начальной загрузки, а также сокращающий время запуска программ. Prefetcher впервые появился в операционной системе Windows XP. Начиная с Windows Vista, он… … Википедия

1) стираются все данные
2) производится полная проверка диска
3) производится очистка каталога диска
4) диск становится системным
12. В многоуровневой иерархической файловой системе...
1) Файлы хранятся в системе, представляющей собой систему вложенных папок
2) Файлы хранятся в системе, которая представляет собой линейную последовательность

13. Путь к файлу:
1) это поименованная область на диске;
2) это последовательность из имен каталогов, разделенных знаком «\»;
3) это список файлов, собранных в одном каталоге;
4) это список имен каталогов, собранных в корневом каталоге.

14. В процессе архивации файлы…
1. Сжимаются без потери информации
2. Перемещаются на свободные сектора
3. Копируются в другую папку
4. Удаляются из каталога
15. В процессе дефрагментации диска каждый файл записывается:
1) В нечетных секторах
2) В произвольных кластерах
3) Обязательно в последовательно расположенных секторах
4) В четных секторах

16. Драйверы устройств:
1) это аппаратные средства, подключенные к компьютеру для осуществления операций ввода/вывода;
2) это программные средства, предназначенные для подключения устройств ввода/вывода;
3) это программа, переводящая языки высокого уровня в машинный код;
4) это программа, позволяющая повысить скорость работы пользователя на
17. Прикладные программы
1) Программы, предназначенные для решения конкретных задач
2) Управляют работой аппаратных средств и обеспечивают услугами нас и наши прикладные комплексы
3) Игры, драйверы и трансляторы
4) Программы, которые хранятся на дискетах
18. Операционная система выполняет функции:
1) обеспечения организации и хранения файлов;
2) организации диалога с пользователем, управления аппаратурой и ресурсами компьютера;
3) обмена данными между компьютером и различными периферийными устройствами;
4) подключения устройств ввода/вывода.
19. В процессе загрузки операционной системы происходит:
1) Копирование файлов операционной системы с гибкого диска на жесткий диск
2) Копирование файлов операционной системы с CD диска на жесткий диск
3) Последовательная загрузка файлов операционной системы в оперативную память
4) Копирование содержимого оперативной памяти на жесткий диск
20. Системный диск необходим для:
1) Загрузки операционной системы
2) Защиты компьютера от вирусов
3) Создания программ с использованием графического интерфейса
4) Архивации и разархивации файлов
21. Вершиной иерархической системы папок графического интерфейса Windows является папка:
1. корневого каталога диска
2. мой компьютер
3. сетевое окружение
4. Рабочий стол
22. Диалоговое окно в Windows предназначено для
1) диалога между пользователем и компьютером;
2) удаления программы;
3) отображения пиктограммы программы;
4) отображения названия программы.

23. В Windows не существует
1) окон программ;
2) окон тестирования;
3) диалоговых окон;
4) окон документов.
24. Компьютерные вирусы это…
1) Программы, которые могут размножаться и выполнять вредные действия по уничтожению программ и данных
2) Программы, которые могут заражать телепрограммы
3) Вирусы, которые опасны для здоровья человека

Глава 2
Технология обработки графической информации
31. Все компьютерные изображения разделяют на два типа:
1. растровые и векторные
2. черно – белые и цветные
3. сложные и простые
32. Растровое изображение создается с использованием…
1. точек различного цвета (пикселей)
2. линий
3. окружностей
4. прямоугольников
33. Векторные изображения формируются из…
1. объектов, которые называются графическими примитивами
2. точек различного цвета (пикселей)
3. строк и столбцов
4. рисунков и фотографий
34. Для обработки цифровых фотографий и отсканированных изображений наилучшим средством служит…

35. Для создания рисунков, схем и чертежей наилучшим средством служит…
1. растровый графический редактор
2. векторный графический редактор
3. система компьютерного черчения
36. Форматы графических файлов определяют …
1. Способ и форму хранения информации в файле
2. Качество изображения
3. Объем изображения
4. Размерность изображения
37. В векторном графическом редакторе нарисованный объект…
1. Продолжает сохранять свою индивидуальность, и его можно масштабировать и перемещать по рисунку
2. перестает существовать как самостоятельный элемент после окончания рисования и становится лишь группой пикселей на рисунке.
38. Наиболее распространенными приложениями для разработки презентаций является…
1. Microsoft Power Point
2. Microsoft Access
3. Microsoft Excel
4. Microsoft Word
39. Файлы презентаций могут сохраняться в формате…
1. ppt
2. psd
3. tiff
4. doc

срочно нужно!!!№1задание с выборочным ответом.КАкое количество информации содержит один разряд двоичного числа? 1)1 байт 2)3 бита 3)4 бита 4)1 бит.

№2.Задание с кратким ответом. Какое количетсво информации несет двоичный код 10101010?

1.Что такое файл?

2.Из каких частей состоит имя файла?
3.Кто или что дает имя файлу?
4.Кто или что присваивает файлу расширение?
5.Сколько символов может включать имя файла?
6.Сколько символов обычно отводится под расширение файла?
7.Что надо сделать с диском, что бы на нем можно было хранить файлы?
8.На какие области разбивается диск при форматировании?
9.В каком случае файловая система является одноуровневой?
10.Как записать путь к файлу?
11.К какому ПО относится операционная система?
12. Какие сведения должна иметь операционная система для организации доступа к файлам?

13.Где хранится выполняемая в данный момент программа и обрабатываемые данные?
14.Что называется каталогом?
15.Когда осуществляется начальная загрузка операционной системы?
16.Что такое операционная система?
17.Как обозначается имя логического диска?
18.Какой каталог называют корневым?
19.Как называется состояние операционной системы, при котором она перестает выдавать результаты и реагировать на запросы?
20.Что происходит с файлами ОС в процессе ее загрузки?
21.Пользователь, перемещаясь из одного каталога в другой, последовательно посетил каталоги LESSONS, CLASS, SCHOOL, D:\ , MYDOC, LETTERS. При каждом перемещении пользователь либо спускался в каталог на уровень ниже, либо поднимался на уровень выше. Каково полное имя каталога, из которого начал перемещение пользователь?

1) D:\MYDOC\LETTERS

2) D:\SCHOOL\CLASS\LESSONS

3) D:\LESSONS\CLASS\SCHOOL

22. Определите, какое из указанных имен файлов не удовлетворяет маске: ?*di.t?*

4) melodi.theme

23.В некотором каталоге хранится файл Список_литературы.txt. В этом каталоге создали подкаталог с именем 10_CLASS и переместили в него файл Список_литературы.txt. После чего полное имя файла стало D:\SCHOOL\PHYSICS\10_CLASS\Список_литературы.txt.

Каково пол­ное имя каталога, в котором хранился файл до перемещения?
1) D:\SCHOOL\PHYSICS\10_CLASS

2) D:\SCHOOL\PHYSICS

24. Какой из файлов соответствуют маске??P*.A??.

А вы никогда не задумывались над тем, что же происходит с операционной системой в тот момент, когда она рисует свой логотип и говорит «Starting Windows»? И вообще, почему она долго загружается? Ведь при старте системы уж точно не решаются никакие задачи, сложные с вычислительной точки зрения!

Что тогда подразумевает под собой загрузка операционной системы? По большей части это проецирование в память исполняемых модулей и инициализация служебных структур данных. Структуры данных живут в памяти, поэтому операции с ними по идее должны быть быстрыми. Все наталкивает на мысль о том, что время съедается именно процессом загрузки исполняемых модулей в память.

Давайте интереса ради разберемся, какие модули, в каком количестве и в каком порядке загружаются при старте ОС. Чтобы выяснить это, можно, например, получить лог загрузки системы. Подопытная ОС в моем случае - Windows 7 Enterprise x64. Логировать процесс загрузки будем при помощи отладчика ядра. Существует несколько вариантов отладчиков ядра, лично я предпочитаю WinDbg. Также нам понадобятся некоторые вспомогательные средства для волшебного превращения лога в нечто более приятное глазу.

Mining and crafting

Настройка отладки хорошо гуглится, поэтому описывать подробно этот процесс я не буду. Поскольку нас интересует все происходящее с момента старта системы, нам нужно отметить пункт «Cycle Initial Break», с помощью чего отладчик остановится, как только в отлаживаемой системе будет загружена подсистема отладки ядра. Дублирование вывода в файл можно осуществить при помощи команд ".logopen" и ".logclose", это просто. Другая полезная команда - ".cls". Она очищает экран команд, и да, только экран команд.

Интересующая нас функция - «MiCreateImageFileMap». Это внутренняя функция менеджера памяти, проецирующая исполняемый файл в память. Проецирование в память происходит при создании секции, например, при запуске исполняемого файла. Однако учтите, что если исполняемый файл проецируется в память, это не гарантия того, что будет выполнен его код! Эта функция просто создает проекцию, чаще всего «про запас», чтобы, если кто-то надумает запустить модуль на исполнение, можно было сэкономить время его загрузки. На эту функцию поставим логирующую точку останова.

Если у вас достаточно маны, вводите следующую команду:
bu nt!MiCreateImageFileMap "dt nt!_EPROCESS -d ImageFileName @$proc; dt nt!_FILE_OBJECT -d FileName @rcx; g"
Магическая строчка буквально означает следующее:

  • bu (Set Unresolved Breakpoint) - установить неразрешенную точку останова. Не то чтобы кто-то или что-то не разрешал, просто для ее установки необходимо определиться, по какому адресу ее ставить. Дело в том, что заранее не известно, по какому адресу она должна располагаться. При загрузке любого модуля проверяется присутствие в нем необходимой функции, и если такая функция найдена, точка останова устанавливается автоматически. Такой способ установки незаменим при включенном ASLR - рандомизации адресного пространства, поскольку модули будут загружаться каждый раз по разным адресам, и точка останова, установленная по фиксированному адресу, с большой вероятностью окажется не у дел.
  • nt!MiCreateImageFileMap - символ, на котором нужно останавливаться. В WinDbg принята запись в форме "module_name!function_name". В данном случае nt является предопределенным псевдонимом для ntoskrnl.exe.
  • далее следует часть WinDbg-скрипта, которая будет выполняться каждый раз при остановке на этой функции. «dt nt!_EPROCESS -d ImageFileName @$proc» по-русски означает «отобразить поле ImageFileName структуры _EPROCESS из модуля nt при условии ее отображения по адресу, определенному в псевдорегистре «текущий процесс»». Следующая после разделителя ";" команда означает примерно то же самое, только адрес структуры берется из регистра rcx, в котором в Microsoft x64 ABI передается первый параметр функции. «g» означает «go», т.е. продолжить исполнение.

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

Поехали! Отжимаем тормоз точки останова и ждем. Я ждал, пока не прогрузится рабочий стол, т.е. я залогинился. Полученный «урожай» немного редактируется, обрезается все лишнее для удобства дальнейшей обработки и скармливается дружище питону. Не будем заострять внимание на парсинге лога. Отметим только, что граф укладывался в форму спирали Архимеда с дальнейшей коррекцией вручную, поскольку происходило наложение узлов друг на друга. В полученном графе учитывается порядок загрузки библиотек. К сожалению, пришлось пожертвовать учетом порядка загрузки исполняемых файлов относительно библиотек в угоду удобочитаемости графа.

Карта звездного неба


Условно выделим несколько групп загрузки.

Начинается работа OC в модуле ntoskrnl.exe, являющимся ядром ОС. А если еще конкретнее - с функции KiSystemStartup(). Вместе с загружаемыми системными компонентами она формирует фундамент ОС: разделение режимов работы, базовые сервисы для пользовательских приложений и т.п. В эту же группу входят драйверы, отмеченные для загрузки во время старта системы. В двух словах, в этой ракушке зарождается ОС Windows.

Следующий узел - менеджер сессий (session manager). Его представляет первый после системного процесс, стартующий в Windows - smss.exe. Процесс примечателен тем, что является родным (native) процессом Windows, то есть он не использует подсистему Win32, которая в общем-то еще не загружена. Этот процесс использует только нативные сервисы операционной системы посредством ntdll.dll, представляющей собой интерфейс режима пользователя для сервисов ОС. Также этот процесс является доверенным компонентом операционной системы и обладает исключительными правами, например, он может создавать маркеры безопасности (security tokens). Но главное его предназначение - создание сеансов и инициализация подсистем, как графической, так и различных исполняемых (Windows, POSIX). Эта ракушка воздает каждому по потребностям.

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

Самой массивной оказалась группа сервисов. Во многом она обязана своим объемом службе SuperFetch. Эта та самая, про которую говорят, что она по выходным заранее прогружает офисный пакет, а в начале рабочей недели - Steam с игрушками. Superfetch прогружает огромное количество модулей при старте системы, чтобы потом «все быстрее работало». Да и кроме него в системе хватает сервисных приложений и автозапускающихся драйверов. Думаю, все видели оснастку «Службы и приложения». Эта звезда жизни заводит в системе все, что нужно и не очень.

Последним отмечу любимый всеми explorer.exe. Примечательно, что к моменту его запуска все используемые им модули уже загружены в память. В скриншот также попал некий vcredist_x64.exe - бедолага лежал на рабочем столе подопытной виртуальной машины и был прогружен в память проводником.

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

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

Граф загрузки был построен для ОС Windows 7 Enterprise x64, установленной на виртуальной машине VMware. Ниже приведены векторное изображение графа и непосредственно файл в формате gml, с которым можно поиграться в любом редакторе графов.