Создание операционной системы на ассемблере

Загрузка Windows NT.


boot sector NT - зависти от формата FS, для FAT устанавливается один, для NTFS - другой, в нем содержиться код чтения FS, без обработки подкаталогов.

  • boot sector загружает NTLDR из корневой директории, который запускается в real mode;
  • NTLDR певодит систему в защищенный режим;
  • Создаются необходимые таблицы страниц для доступа к первому мегабайту памяти;
  • Активируется механизм страничного преобразования;
  • Далее NTLDR читает файл boot.ini, для этого он использует встроенный read only код FS. В отличии от кода бутсектора он может читать подкаталоги;
  • На экране выводится меню выбора вида загрузки;
  • После выбора, или по истечении таймаута, NTLDR из файла boot.ini определяет нахождение системной директории Windows, она может находиться в другом разделе, но обязательно должна быть корневой;
  • Если в boot.ini указана загрузка DOS (или Win9x), то файл bootsect.dos загружается в память и выполняется горячая перезагрузка;
  • Далее обрабатывается boot.ini;
  • Загружается ntdetect.com, который выводит сообщение "NTDETECT V4.0 Checking Hardware", и детектит различные устройства... Вся информация собирается во внешней структуре данных, которая в дальнейшем становиться ключем реестра "HKEY_LOCAL_MACHINE\HARDWARE\DESCRIPTION";
  • NTLDR выводит сообщение "OSLOADER V4.0";
  • Из директории winnt\system32 загружается ntoskrnl.exe, содержащий в себе ядро и подсистемы выполнения (менеджер памяти, кэш менеджер, менеджер объектов), и файл hal.dll, который содержит в себе интерфейс с аппаратным обеспечением;
  • Далее NTLDR предоставляет возможность выбрать "последние известные хорошие" конфигурации. В зависимости от выбора выбираются копии реестра используемые для запуска;
  • Загружает все драйвера и другие необходимые для загрузки файлы;
  • В завершение он запускает функцию main из ntoskrnl.exe и завершает свою работу;
  • Не могу гарантировать полную достоверность представленной информации, NT я знаю плохо, тем более не знаю что у нее внутри. Так же не могу что-либо более конкретного сказать про распределение памяти в процессе загрузки Windows NT. некоторые неточности могут быть связаны с моим плохим знанием английского, желающие могут посмотреть на оригинал по адресу: Inside the Boot Process, Part 1

    Ну вот, мы узнали как загружаются системы. В своей системе мы не будем слепо следовать какому либо из представленных здесь путей. Ради совместимости обеспечим формат ядра, аналогичный Linux. Мне кажется, в этой системе все сделано достаточно понятно и просто.

    Я думаю никто не будет против того, что мы в первую очередь будем ориентироваться на Linux?

    А в следующем выпуске мы поговорим о распределении памяти в системе и начнем писать свой boot sector.

    Отправлено 2001-07-20 для 695 подписчиков.
    ведущий рассылки Dron
    Архив Рассылки

    При поддержке Kalashnikoff.ru



    Содержание раздела