Splash Site Admin
Зарегистрирован: 09.11.2007 Сообщения: 228
|
Добавлено: Вс Мар 30, 2008 12:20 am Заголовок сообщения: Как стартует компьютер с Windows XP |
|
|
Когда подано питание на материнку, чипсет запускает BIOS, которая заставляет железо пройти самотестирование (POST), после чего анализирует список загрузочных устройств, находит нужное и загружает его MBR (главную загрузочную запись). MBR, в свою очередь, считывает в память загрузочные сектора раздела. Код загрузочных секторов считывает корневой каталог и загружает Ntldr (NT Loader)
Ntldr переводит проц в 32-битный защищённый режим работы (все предыдущие события происходили в 16-битном режиме), включает свопинг памяти, очищает экран и читает boot.ini с помощью встроенных драйверов файловых систем. Единственное, что может обломать храбрый Ntldr - это SCSI-диск. Но и тогда он не растеряется и призовёт в помощь Ntbootdd.sys
Если в boot.ini более одной записи об ОС, то Ntldr выводит загрузочное меню. Уловив пользовательский выбор, Ntldr напряжённо втыкает в системный каталог. Если там нагло разместилась MS-DOS или Win9x, то Ntldr разочарованно переводит проц обратно в 16-битный режим и передаёт бразды правления bootsect.dos, если же обнаружена настоящая NT, то Ntldr радостно принимается за работу
Сперва он заставляет ntdetect.com выпытать у BIOS конфигурацию оборудования, чтобы потом занести её в ветку реестра HKLM\Hardware\Description. Затем предлагает юзеру вдавить F8, если что (кстати, если ваша материнка воспринимает F8 как призыв вывести список загрузочных устройств, а вам позарез нужно меню вариантов загрузки Windows, например, чтобы стартовать в Safe Mode - попробуйте F5), и, соответствуясь выбором юзера и содержимым boot.ini, грузит hal.dll, ntoskrnl.exe, реестр, драйвер файловой системы для системного раздела и прочие первично необходимые дрова. Затем Ntldr отчаливает, уступая трон ntoskrnl.exe
Ntoskrnl.exe получает от Ntldr всё необходимое: указатели на таблицы памяти, загруженные ветви реестра, список драйверов. Исполнительной части ядра ничего не остаётся, как приступить к нулевой фазе инициализации, включающей в себя конфигурирование системных контроллеров прерываний и таймера процессорного времени, инициализацию диспетчеров памяти, объектов, процессов и Plug'n'Play. Диспетчер процессов создаёт цикл Idle и процесс System, а также поток для начала первой фазы инициализации, но этот поток не может исполняться, ведь прерывания пока запрещены
По окончании нулевой фазы управление передаётся циклу Idle,а затем системному потоку, начинающему первую фазу:разрешение прерываний, инициализацию загрузочного видеодрайвера, диспетчера электропитания, системных часов, диспетчер системных сервисов. Создаются объекты: объекты безопасности, объекты синхронизации, рабочие потоки. На системное адресное пространство проецируются таблицы NLS (поддержки национальных языков) и библиотека ntdll.dll, инициализируется диспетчер ввода-вывода (он верховодит дровами устройств) и вся остальная шушера. В оконцовке первой фазы создаётся процесс менеджера сеансов smss.exe; система запускает его и с ужасом ждёт долгих пять секунд, не отбросит ли он копыта. Если отбросит - система выбрасывает синий экран со словами SESSION5_INITIALIZATION_FAILED
Smss.exe запускает NativeAPI-программы, открывает известные dll'ки, выполняет отложенные файловые операции, инициализирует реестр и запускает процесс Win32-подсистемы: в случае NT 4 это csrss.exe, в более поздних ОСях - csrss.exe+win32k.sys, после чего экран меняет разрешение с VGA (640x480) на выбранное в профиле юзера по умолчанию. После всего этого smss.exe запускает Winlogon
Winlogon запускает службы и драйверы, создаёт объекты Рабочего стола, запускает lsass.exe, который заведует безопасностью Windows, и подгружает библиотеку Msgina.dll, которая принимает от юзера пароль. После ввода пароля Winlogon и lsass.exe определяют его правильность, и если пароль введён верно, запускается userinit.exe, который, в свою очередь, грузит explorer.exe и завершается. Ну а explorer.exe предоставляет вошедшему в систему юзеру Рабочий стол с привычными ярлычками
Кстати, Windows разрешает использовать вместо msgina.dll, userinit.exe и explorer.exe другие программы, да и logonui.dll, содержащий экран приветствия, тоже можно подменить, так что в выборе оформления входа в систему и графических оболочек Windows-юзеры ничуть не скованы.
(c) Adrax |
|