Добавил:
Upload Опубликованный материал нарушает ваши авторские права? Сообщите нам.
Вуз: Предмет: Файл:
ОС М1 2011.docx
Скачиваний:
9
Добавлен:
12.11.2019
Размер:
162.32 Кб
Скачать

1.6.1 Два этапа загрузки

Использование загрузочного сектора для непосредственной загрузки ядра ОС имеет свои особенности:

  • код загрузчика вынужденно является очень простым, потому в нем не возможно выполнять более сложные действия (например, руководить загрузкой нескольких ОС), большинство других недостатков являются последствиями этого;

  • не возможно передавать параметры в загрузчика;

  • процесс ограничен описанной схемой переключения из МВR на загрузочный сектор, нет возможности руководить этим процессом;

  • нет возможности загружать ядро из другого раздела диска или из подкаталога;

  • ОС всегда будет запущена в реальном режиме процессора.

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

В этом случае загрузчика разбивают на две части: загрузчик первого и второго этапов.

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

Загрузчик второго этапа — это полномасштабное приложение (программа), которая получает контроль над компьютером после выполнения начальной загрузки. В сущности, такой загрузчик является мини-ОС специализированного назначения.

Рассмотрим некоторые возможности двухэтапного загрузчика.

  • В нем можно руководить загрузкам нескольких операционных систем. Особенно удобно это делать в загрузчиках, которые принимают управление от МВR: при этом загрузчик берет на себя поиск активного раздела и загрузку системы из него. Конфигурацию такого загрузчика можно динамически изменять во время изменения разделов диска. Загрузчик может содержать код доступа к разным файловым системам, код загрузки разных ядер и тому подобное.

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

  • Его конфигурация может быть задана пользователем из загруженной ОС. Для этого, например, можно задать текстовый конфигурационный файл, сохранить его на диске и запустить специальную утилиту, которая сделает синтаксический разбор файла, превратит его во внутреннее отображение и сохранит на диске в фиксированном месте, известному загрузчику.

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

1.6.2 Загрузка и инициализация ядра

Код ядра хранят в отдельном файле на диске, загрузчик должен его найти. Есть разные подходы к реализации загрузки ядра: оно может загрузиться в память полностью или частями (при этом одни части могут загружать другие за потребностью), или в частично сжатом состоянии (а после выполнения некоторых предыдущих операций быть распакованным).

В случае одноэтапной -загрузки ядро загружают всегда в реальном режиме.

В случае двухэтапного -режим загрузки зависит от того, переключают ли загрузчика второго этапа в защищенный режим.

После загрузки ядра в память управления передают по адресу специальной процедуры, которая начинает процесс инициализации ядра, и выполняются такие действия, как опрос и инициализация оборудования (обычно будут инициализировать все оборудование — даже то, которое было уже проинициолизировано в ВIOS), инициализация подсистем ядра, загрузки и инициализация необходимых драйверов (в первую очередь диска и видеокарты), монтирования корневой файловой системы. Точная последовательность действий разная для разных ОС.