При включении питания компьютера регистрам процессора присваиваются некоторые заранее определённые значения. Одним из регистров является регистр указателя на инструкцию (instruction pointer), и его значение после включения питания компьютера точно определено - это 32-битное значение 0xfffffff0. Регистр указателя на инструкцию указывает на код, который должен быть выполнен процессором. Ещё один регистр - 32-битный регистр управления cr1, значение которого сразу после загрузки равно 0. Один из битов cr1, а именно бит PE (Protected Enabled), указывает на то, работает ли процессор в защищённом (Protected mode) или в реальном режиме (Real mode). Поскольку во время загрузки этот бит не установлен, процессор загружается в реальном режиме. Реальный режим, помимо других вещей, определяет, что линейные и физические адреса идентичны.
Значение 0xfffffff0 немного меньше, чем 4Гб; поэтому если машинa не имеет 4Гб физической памяти, то она не сможет обратиться к существующему адресу в памяти. Аппаратное обеспечение компьютера преобразовывает этот адрес так, что он указывает на область памяти BIOS.
BIOS расшифровывается, как Basic Input Output System (Базовая Система Ввода Вывода) и представляет собой микросхему на материнской плате с относительно небольшим объёмом памяти, доступной только для чтения (ROM). В этой памяти хранятся различные низкоуровневые процедуры, являющиеся специфическими для этого аппаратного обеспечения. Итак, процессор вначале перейдёт на адрес 0xfffffff0, который на самом деле находится в области памяти BIOS. Обычно по этому адресу располагается инструкция перехода к процедурам BIOS POST.
POST расшифровывается, как Power On Self Test (Самотестирование при включении питания). Это набор процедур, включающий проверку памяти, проверку системной шины и другие низкоуровневые процедуры, при помощи которых процессор может должным образом инициализировать компьютер. Важным шагом на данной стадии является определение загрузочного устройства. Все современные BIOS позволяют устанавливать загрузочное устройство вручную, поэтому вы можете загружаться с флоппи-диска, компакт-диска, жёсткого диска и т.д.
Самое последние действие POST - это инструкция INT 0x19. Эта инструкция читает 512 байт из первого сектора загрузочного устройства и записывает их в память по адресу 0x7c00. Термин первый сектор происходит от архитектуры жёсткого диска, в котором магнитный диск разделён на цилиндрические дорожки. Дорожки пронумерованы и каждая из них разделена на сектора (обычно 64). Нулевая дорожка располагается на внешний стороне у самого края магнитного диска, и её первый сектор (дорожки или цилиндры нумеруются с нуля, но сектора - с единицы) имеет особое значение. Его также называют Главная Загрузочная Запись (Master Boot Record), или сокращённо - MBR. Оставшиеся сектора на первой дорожке никогда не используются [1].
[1] |
Некоторые утилиты, такие как disklabel(8) могут хранить информацию в этой области, обычно во втором секторе. |
Пред. | Начало | След. |
Обзор | Уровень выше | Этап boot0 |
Этот, и другие документы, могут быть скачаны с ftp://ftp.FreeBSD.org/pub/FreeBSD/doc/.
По вопросам, связанным с FreeBSD, прочитайте документацию прежде чем писать в <questions@FreeBSD.org>.
По вопросам, связанным с этой документацией, пишите <doc@FreeBSD.org>.
По вопросам, связанным с русским переводом документации, пишите в рассылку <frdp@FreeBSD.org.ua>.
Информация по подписке на эту рассылку находится на сайте проекта перевода.