понедельник, 13 мая 2019 г.

Этапы загрузки операционной системы

Linux может загружаться как через специализированный загрузчик (GRUB, Syslinux, LILO, Das U-Boot), так и через boot sector, рассмотрим второй случай:

  1. boot sector записывает свой код в 9000h
  2. Загружает с диска Setup, который находится в нескольких последующих секторах (9000h:0200h;)
  3. Загружает ядро в 1000h. Ядро так же следует после Setup. Ядро должно быть меньше 508 килобайт
  4. Управление передается Setup
  5. Setup проверяется на корректность
  6. С помощью BIOS определяется оборудование, размер памяти, наличие жестких дисков, наличие шины Micro channel bus, PC/2 mouse, Advanced power management, инициализируются клавиатура и видеосистема
  7. Процессор переводится в защищенный режим
  8. Управление передается ядру
  9. Ядро переписывается по адресу 100000h (если оно было заархивировано, то оно предварительно разархивируется)
  10. Управление передается ядру
  11. Активируется страничная адресация
  12. Происходит инициализация IDT и GDT, при этом в кодовый сегмент и в сегмент данных ядра входит вся виртуальная память
  13. Инициализируются драйвера
  14. Управление передается процессу init;
  15. init запускает все остальные необходимые программы в соответствии с файлами конфигурации(init.X);

Теперь рассмотрим загрузку Windows (NT, так как ранние версии устарели):

  1. boot sector загружает NTLDR
  2. Процессор переходит в защищенный режим;
  3. Делаются таблицы страниц
  4. Механизм преобразования страниц;
  5. Чтение boot.ini, используя код FS под названием read only. Выводит на экран выбор загрузки ОС (из boot.ini)
  6. Из boot.ini считывается адрес директории Windows
  7. Управление получает ntdetect.com, определяющий устройства, установленные на компьютере
  8. Из %dir%\system32 загружается ntoskrnl.exe, в котором находится ядро.
  9. Управление передается hal.dll с информацией об аппаратном обеспечении;
  10. Загружаются драйвера и важные файлы
  11. Стартует графическая оболочка и пр.

Комментариев нет:

Отправить комментарий