Работа загрузчика
Загрузчик (boot loader) позволяет выбрать операционную систему, которую требуется запустить, и загружает файлы операционной системы из загрузочного раздела. Общие задачи, которые выполняет загрузчик:
устанавливает 32-разрядную модель памяти с прямой адресацией (flat addressing);
собирает данные об аппаратной конфигурации;
строит ее описания в памяти;
передает указатель на это описание в блок загрузчика.
После этого NTLDR загружает образ ядра, HAL и драйверы для устройств и файловой системы тома, с которого производится загрузка системы. Помимо всего прочего, на данном этапе производится также и загрузка некоторых драйверов, для которых равен нулю параметр реестра Start, расположенный в следующем разделе реестра:
HKEY_LOCAL_MACHINE\SYSTEM\CurrentControlSet\Services\ ServiceName
Здесь ServiceName представляет собой имя сервиса, например:
HKEY_LOCAL_MACHINE\SYSTEM\CurrentControlSet\Services\atapi
Функции загрузчика NTLDR
Когда NTLDR начинает работу, он очищает экран и выполняет следующие действия:
Переключает процессор в режим использования 32-разрядной модели памяти с прямой адресацией. Компьютеры х86 при запуске стартуют в реальном режиме, подобном режиму, в котором стартуют процессоры 8088 и 8086. Поскольку NTLDR представляет собой 32-разрядную программу, для того чтобы загрузчик смог начать выполнять какие бы то ни было действия, процессор необходимо переключить в защищенный режим.
Запускает соответствующую минифайловую систему. Код, предназначенный для доступа к файлам на томах FAT и NTFS, встроен в NTFS. Этот код позволяет загрузчику читать файлы, получать доступ к ним и выполнять их копирование.
Читает расположенный в корневом каталоге системного диска файл Boot.ini и отображает на экране соответствующее меню для выбора загружаемой операционной системы. Экран, выводимый на данном этапе загрузки, называется экраном загрузчика (boot loader screen). Если компьютер сконфигурирован для загрузки нескольких систем, и пользователь выбирает операционную систему, отличную от Windows NT/2000, то NTLDR загружает в память файл Bootsect.dos и передает ему управление. Другая операционная система стартует как обычно, поскольку файл Bootsectdos содержит копию загрузочного сектора раздела, который находился на основном разделе или логическом диске до инсталляции Windows NT/2000.
Если выбрана одна из версий Windows NT/2000, то выполняется Ntdetect.com.
Загружает и запускает ядро операционной системы Ntoskrnl.exe и передает ему информацию, собранную программой Ntdetect.com.
Вопросы для самоконтроля
Что такое WIN32 API? В чем принцип его работы?
В каких библиотеках динамической загрузки содержится базовый код API WIN32?
В чем назначение реестра?
Опишите структуру реестра.
Опишите физическую структуру операционной системы.
Какие существуют уровни привилегий в архитектуре процессора Intel?
Расскажите о классах приоритетов системы Windows.
Расскажите о поэтапном запуске системы.
Расскажите о работе и функциях загрузчика.
