Windows - статьи

Юридические услуги жилищное право в Новокузнецке помощь юриста.

Загрузка Windows 2000 - часть 4


Ntldr должен загрузить сейчас этот драйвер именно сейчас, иначе ядро будет требовать от драйверов их же загрузки, и получится замкнутый круг.

  • Загружает драйвера, обязательные для запуска системы. Ход загрузки отражается индикатором «Starting Windows». Полоска на индикаторе продвигается вперед по мере загрузки драйверов (число загрузочных драйверов считается равным 80, поэтому после успешной загрузки каждого драйвера полоска продвигается на 1,25%). Если в boot.ini указан параметр /SOS, то вместо индикатора NTLDR выводит имя драйвера каждого загрузочного драйвера. На этом этапе драйверы лишь загружаются, а их инициализация проходит позже
  • Подготавливает регистры процессора для выполнения Ntoskrnl.exe.
  • На этом участие Ntldr в процессе загрузки заканчивается. Для инициализации системы Ntldr вызывает главную функцию из Ntoskrnl.exe.

    Вызывая Ntoskrnl.exe, Ntldr передает структуру данных с копией строки из Boot.ini (предствляющий выбранный вариант загрузки), с указателем на таблицы памяти (сгенерированные Ntldr для описания физической памяти в системе), с указателем на загруженные в память копии кустов реестра HARDWARE и SYSTEM и суказателем на список загруженных драйверов.

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

    В фазе 0 прервывания отключены. Предназначение этой фазы в том, чтобы сформировать необходимые структуры, необходимые для вызова сервисов в фазе 1. Главная функция Ntoskrnl вызывает KiSystemStartup, которая в свою очередь вызывает HalInitializeProcessor и KiInitializeKernel для каждого процессора. Работая на стартовом процессоре, KiInitializeKernel выполняет общесистемную инициализацию ядра, в том числе всех внутренних структур данных, разделяемых всеми процессорами. Затем каждый экземпляр KiInitializeKernel вызывает функцию ExpInitializeExecutive, отвечающую за управление фазой 0.

    ExpInitializeExecutive начинает с вызова HAL-функции HalInitSystem, позволяющей HAL взять управление инициализацией системы на себя.


    - Начало -  - Назад -  - Вперед -



    Книжный магазин