Процесс запуска Windows NT
Процесс запуска Windows NT — это процесс инициализации
Фаза начальной загрузки
Фаза начальной загрузки различается в зависимости от аппаратной платформы. Начиная с ранней фазы, не привязанной к ОС, началом процесса загрузки считается:
- Для x64: когда код сектора загрузочного раздела исполняется в реальном режиме и загружает NTLDR
- Для IA-64: когда исполняется программа IA64ldr.efi EFI(позднее называемая просто как IA64ldr)
От данной точки процесс загрузки продолжает выполнять следующее:
Файл NTLDR, размещенный в корневой папке загрузочного диска, состоит из двух частей. Первая — это модуль StartUp, после которого следует загрузчик ОС (osloader.exe), обе части хранятся в файле NTLDR. При загрузке NTLDR в память управление передается модулю StartUp, при этом центральный процессор работает в реальном режиме. Основная задача StartUp — перевод процессора в защищённый режим, что позволяет использовать 32-разрядную адресацию памяти, а также создать таблицу дескрипторов прерываний, таблицу глобальных дескрипторов, таблицу страниц и включение страничной работы с памятью. Это делается с использованием возможностей основного операционного окружения, на котором установлена операционная система. Затем модуль StartUp загружает и запускает загрузчик ОС.
Загрузчик ОС в NTLDR содержит основные функции для доступа к дискам
Затем загрузчик считывает содержимое файла boot.ini для обнаружения информации о системном томе. Если такой файл отсутствует, то загрузчик пытается обнаружить информацию из стандартного установочного каталога. Для машин под Windows NT это каталог C:\WINNT. Для машин под Windows XP и 2003 загружается из C:\WINDOWS.
В этом месте экран очищается и в Windows 2000 и поздних версиях NTLDR и IA64ldr, которые поддерживают
Если boot.ini содержит запись более чем об одной операционной системе, то пользователю показывается меню загрузки, позволяющее выбрать, какую именно из операционных систем загружать. Если выбрана операционная система, не основанная на NT, подобно Windows 98, то NTLDR загружает соответствующий файл загрузочного сектора, указанный в списке в boot.ini (по умолчанию это bootsect.dos, если не задано иное имя файла) и контроль над выполнением переходит к нему. Если выбрана операционная система, основанная на NT, NTLDR запускает ntdetect.com, который собирает основную информацию об аппаратном обеспечении компьютера, сообщаемую BIOS'ом.
В этой точке процесса загрузки NTLDR очищает экран и выводит псевдографический индикатор состояния (который часто не виден под системами XP или 2003 из-за их скорости инициализации); Windows 2000 также показывает текст «Starting Windows…». Если во время этой фазы пользователь нажмёт F8, то показывается расширенное меню загрузки, содержащее различные специальные режимы загрузки, включающие в себя безопасный режим с конфигурацией последней успешной загрузки, с включением отладки и (в случае серверных редакций) режим восстановления служб каталогов.
Загрузка продолжается, как только выбирается один из пунктов или если повторно нажимается F8.
Фаза загрузки ядра
- ntoskrnl.exe (ядро)
- hal.dll (тип абстрактного уровня аппаратного обеспечения)
- kdcom.dll (библиотека расширения ядра отладчика аппаратного обеспечения)
- bootvid.dll (для логотипа Windows и индикатора статуса загрузки)
- config\system — реестр
- HKLM\SYSTEM\CurrentControlSet\Control\Session Manager\BootExecute
- процессы служб в порядке готовности
- *HKLM\SYSTEM\CurrentControlSet\Control\ServiceGroupOrder
Инициализация подсистемы ядра и подсистемы выполнения Windows делается за две фазы.
Во время первой фазы создаются базовые внутренние структуры памяти и инициализируется
Второй этап предполагает инициализацию драйверов устройств, которые были определены NTLDR как системные драйверы.
Во время процесса загрузки драйверов устройств в нижней части экрана систем под Windows 2000 виден индикатор статуса; в Windows XP и Windows Server 2003 это было заменено анимированной полоской, которая не отражает реального времени процедуры. До Windows 2000 эта часть процесса загрузки занимала значительно больше времени, потому что драйверы инициализировались последовательно по одному. В Windows XP и Windows Server 2003 все драйверы инициализируются асинхронно.
См. также
- Архитектура Windows NT
- NTLDR
- Начальная загрузка компьютера
- Процесс загрузки Linux
- Загрузчик операционной системы
- Мультизагрузка
- Главная загрузочная запись
- POST (аппаратное обеспечение)
- BootVis
Примечания
- ↑ Windows, NT Object Manager . Дата обращения: 20 августа 2008. Архивировано 21 апреля 2008 года.
Ссылки
- Russinovich, Mark; David Solomon[англ.]. Startup and Shutdown // Microsoft Windows Internals (неопр.). — 4th edition. — Microsoft Press[англ.], 2005. — С. 251—273.
- Troubleshooting the Startup Process . Windows XP Resource Kit. Microsoft Technet. Дата обращения: 15 февраля 2006. Архивировано 3 апреля 2012 года.
- Mark Minasi, John Enck. Troubleshooting NT Boot Failures . Administrator's Survival Guide: System Management and Security. Windows IT Library. Дата обращения: 15 февраля 2006. Архивировано из оригинала 3 апреля 2012 года.
- Microsoft KB Article 244036 on remote installation & booting
- Definition of the RunOnce Keys
- boot.ini switches
- Startup Applications List
- Troubleshooting Windows XP Startup Process
- AnVir Task Manager — утилита для анализа и редактирования программ автозагрузки Windows