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

1.5 Аппаратная инициализация компьютера

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

Для начала процедуры загрузки на процессор подают команду RESET (сброс).

После ее принятия, некоторые регистры процессора (в частности регистр счетчика команды) приобретают фиксированные значения, и начинается выполнение кода по физическому адресу 0хfffffff0.

Аппаратное обеспечение отображает этот адрес на специальный участок энергонезависимой памяти (RОМ).

Набор программ, который сохраняется в RОМ, по традиции называют BIOS (Ваsic Input/Output -базовая система ввода/вывода), он включает набор управляемых прерываниями низкоуровневых процедур, которые можно использовать для управления устройствами, подключенными к компьютеру.

Большинство современных ОС используют BIOS только на этапе начальной загрузки (какой называют bootstrapping). После этого они никогда не обращаются к процедурам BIOS и все функции управления устройствами у ОС берут на себя драйверы этих устройств. Дело в том, что процедуры ВIOS могут выполняться только в реальном режиме процессора, а ядро — в защищенном режиме; кроме того, обычно код BIOS не имеет высокого качества. Реальную адресацию используют в коде ВIOS потому, что только такие адреса оказываются доступными, когда компьютер едва лишь включен.

Процедура начальной загрузки ВIOS (bootstrap procedure) сводится к четырем операциям.

  1. Выполнение набора тестов аппаратного обеспечения для выяснения, какие устройства в системе присутствуют но работают ли все они корректно. Этот этап называют самотестированием после того, что включило питания (Power-on Self-test, Post).

  2. Инициализация аппаратных устройств. Этот этап очень важен в современных архитектурах, основанных на шине РСI, поскольку он гарантирует, что все устройства будут работать без конфликтов в случае использования линий прерываний или портов введения-выведения. В конце этого этапа будет отображен список установленных РСІ-устройств.

  3. Поиск и выполнение начального кода загрузки. В зависимости от установок ВIOS осуществляют попытку доступа (в предварительно определенном порядке, который можно изменить) к первому сектору гибкого диска или первый сектор (называют главной загрузочной записью (МВR)) заданного жесткого диска или компакт-диска.

  4. Когда устройство найдено, ВIOS копирует содержание его первого сектора в оперативную память (начиная из фиксированного физического адреса 0х00007с00), выполняет команду перехода по этому адресу и начинает выполнять только что загружен код. За все другое отвечает операционная система.

1.6 Загрузчик ОС

Загрузчиком ОС (boot loader) называют программу, вызванную кодом ВIOS во время выполнения процедуры начальной загрузки для создания образа ядра операционной системы в оперативной памяти.

Рассмотрим основные принципы работы самого простого загрузчика в архитектуре РС.

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

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

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