Главная Случайная страница


Полезное:

Как сделать разговор полезным и приятным Как сделать объемную звезду своими руками Как сделать то, что делать не хочется? Как сделать погремушку Как сделать так чтобы женщины сами знакомились с вами Как сделать идею коммерческой Как сделать хорошую растяжку ног? Как сделать наш разум здоровым? Как сделать, чтобы люди обманывали меньше Вопрос 4. Как сделать так, чтобы вас уважали и ценили? Как сделать лучше себе и другим людям Как сделать свидание интересным?


Категории:

АрхитектураАстрономияБиологияГеографияГеологияИнформатикаИскусствоИсторияКулинарияКультураМаркетингМатематикаМедицинаМенеджментОхрана трудаПравоПроизводствоПсихологияРелигияСоциологияСпортТехникаФизикаФилософияХимияЭкологияЭкономикаЭлектроника






Начальная загрузка





 

Стандартная процедура начальной загрузки (bootsrap loader), вызываемая по прерыванию Int 19h BIOS в конце теста POST, выбирает устройство начальной загрузки (Initial Program Loader, IPL) — блочное устройство, поддерживающее функцию чтения секторов. С этого устройства процедура пытается загрузить в ОЗУ самый первый сектор, и если у него в конце имеется сигнатура загрузчика, ему передается управление. До выполнения начальной загрузки должны быть инициализированы перечисленные ниже загрузочные устройства (boot device), которыми пользуются сама эта процедура и загружаемые ею модули:

Устройство ввода (input device) — как правило, клавиатура, с которой мож­
но управлять загрузкой, отвечая на запросы. Это устройство должно поддер­
живать посимвольный ввод — сервис Int 09h BIOS.

Устройство вывода (output device) — как правило, дисплей, на который вы­
водятся сообщения загрузчика. Это устройство должно поддерживать по­
символьный вывод — сервис Int 10h BIOS.

Устройство начальной загрузки (IPL) — как правило, НГМД, НЖМД и дру­
гие устройства, поддерживающие функции блочного чтения — сервис
Int 13h (02 или 42h) BIOS. Для краткости в дальнейшем его будем называть
просто устройством загрузки.

Первый сектор с выбранного устройства загрузки функцией чтения Int 13h (02) BIOS загружается в память по адресу 0000:7C00h, и если в его конце (по адресу 0000:7DFE) обнаружена сигнатура загрузочного сектора (слово AA55h), управ­ление передается на его начало (по адресу 0000:7C00h), где расположена точка входа в программу загрузки. На этом деятельность теста POST завершается, хотя вызовом прерывания Int 18h загрузчик может снова отдать ему управле­ние в случае своих неудач, и POST попробует выполнить загрузку с другого устройства. Нормального возврата из загрузчика не предусмотрено (только вперед, на загрузку ОС!).

Прерывание Int 18h BIOS на старых машинах предназначалось для вызова встроенного интерпретатора BASIC при невозможности загрузки с диска. Поз­же это соглашение стали использовать для попыток загрузки с альтернативных устройств, и Int 18h BIOS определили как функцию аварийного возврата для начального загрузчика. По прерыванию Int 18h POST снова инициализирует стек и переходит к другому устройству загрузки.

Содержимое загруженного первого сектора зависит от того, с какого устройства он был загружен. На загрузочной дискете первый сектор содержит загрузчик — программу, загружающую операционную систему или только ее ядро. Этот за­грузчик привязан к своей ОС и записывается на диск при форматировании его средствами этой ОС. Загрузочный сектор содержит собственно код загрузчика и необходимые ему параметры диска (см. 9.6). Для дисков DOS загрузчик, пользуясь этими параметрами, находит начало корневого каталога и ищет в его первых двух элементах знакомые имена файлов — IO.SYS и MSDOS.SYS. Найдя их, он считывает первые 3 сектора файла IO.SYS в память по адресу 0070:0000 (или 0000:0700, что одно и то же) и передает управление на его начало, сохранив в регистре СН тип носителя, в регистре DL — номер привода, в регистрах АХ и ВХ — старшую и младшую части линейного адреса начала корневого каталога. Сам файл IO.SYS гораздо длиннее трех секторов, но в дальнейшем процессе его загруз­ки и продолжения загрузки ОС данный загрузчик уже участия не принимает.

На жестком диске первый сектор содержит главную загрузочную запись (MBR). Он также загружается в память по адресу 0000:7C00h, и если в его конце обна­ружена сигнатура загрузочного сектора (AA55h), управление передается на его начало. При исполнении главный загрузчик первым делом перемещает (копи­рует) свой код (и таблицу разделов) по адресу 0000:0600h и продолжает свое исполнение уже из новой области. Задача главного загрузчика — найти актив­ный раздел, загрузить его первый сектор в память и, если он имеет сигнатуру загрузочного сектора, передать ему управление. Найдя описатель активного раздела, главный загрузчик загружает в память по адресу 0000:7COOh его пер­вый сектор, при этом регистр SI указывает на описатель активного раздела (по­сле перемещения таблица разделов оказывается в памяти по адресам 0000Ю7В0-07FDh). Первый сектор загружаемого раздела ищется просто: в регистр DX зано­сится слово 0, а в СХ — слово 2 из описателя активного раздела. После этого ос­тается лишь задать адрес буфера в памяти (в ES:BX), функцию чтения одного сектора (АХ - 020lh) и вызвать дисковый сервис Int 13h BIOS. Если считать сектор без ошибок не удается (делается до 5 попыток), главный загрузчик оста­навливается с сообщением «Error loading operating system».

Программный код загрузчика, расположенного на разделе жесткого диска, не­сколько отличается от дискетного, поскольку для работы с дискетой требуется инициализация ее таблицы параметров. Однако общая идея процесса загрузки у них одинакова. Для других операционных систем загрузчик выполняет иные действия, но цель та же — загрузить в память начальные модули и передать им управление.

Главный загрузчик инвариантен по отношению к загружаемым операционным системам и дискам, его программный код, как и таблица разделов, записывается утилитой FDISK при конфигурировании жесткого диска (см. 9.12). Однако традиционный главный загрузчик в принципе не способен загрузить раздел, на­ходящийся дальше чем через 8,4 Гбайт от начала диска, поскольку пользует­ся исключительно трехмерным (CHS) описанием границ разделов. Для больших дисков главный загрузчик должен использовать линейные описа­ния разделов.

Помимо вышеописанного штатного способа загрузки с диска, выполняемой традиционным системным модулем BIOS, имеется возможность загрузки, в принципе, с любого устройства, с которого можно загрузить в память требуе­мый блок данных. Так, возможна загрузка с CD-ROM, но для этого необходимо выполнение специальной процедуры, включающей эмуляцию диском CD-ROM дискеты или жесткого диска (см. 9.11). Возможна загрузка и с нестандартного устройства, подключаемого через карту расширения. Однако системный мо­дуль BIOS сам этого не умеет, и такое загрузочное устройство должно иметь ПЗУ расширения BIOS (см. 5.3) с собственной процедурой загрузки. Для тако­го устройства процедура инициализации в ПЗУ расширения должна перехватить вектор Int 19h (чтобы стать первым загрузочным устройством) или Int 18h (чтобы получить управление, если загрузка со штатных устройств не удается). Этот перехваченный вектор должен указывать на специфическую процедуру загрузки с данного устройства, которая и будет выполняться тестом POST вме­сто или в качестве запасного варианта обычной загрузки. Такой способ приме­няется для устройств удаленной загрузки (Remote Program Loader, RPL) — на­пример, адаптеров локальной сети, снабженных ПЗУ удаленной загрузки (boot ROM). Когда подобный адаптер установлен и работа ПЗУ удаленной загрузки разрешена, при каждой перезагрузке на консоли может появляться предложе­ние о выборе между загрузкой с жесткого диска или по сети (загрузка с диске­ты свой приоритет не потеряет).

Для сложных систем, которые содержат разные устройства, претендующие на роль загрузочных (НГМД, жесткие диски и CD-ROM ATA/ATAPI и SCSI, USB флэш-диски, сетевые адаптеры и т. п.), требуется механизм упорядочива­ния загрузочных устройств. Пользователь должен иметь возможность знако­миться со всем списком имеющихся устройств и выбирать порядок их опроса в загрузочной последовательности. Для этих целей фирмами Compaq, Phoenix и Intel в 1996 году была выпущена спецификация BIOS Boot Specification (BBS). Подробнее процедура загрузки, спецификация BBS и способы создания «самодельных» загрузочных устройств описаны в [6].

 

Date: 2015-05-23; view: 497; Нарушение авторских прав; Помощь в написании работы --> СЮДА...



mydocx.ru - 2015-2024 year. (0.006 sec.) Все материалы представленные на сайте исключительно с целью ознакомления читателями и не преследуют коммерческих целей или нарушение авторских прав - Пожаловаться на публикацию