WYOS - Выпуск №1
BIOS. Процесс загрузки
Wanderer, Вторник, 29 Июнь 2004, 21:14

BIOS
Итак, прежде всего нам необходимо рассмотреть базовую систему ввода/вывода - BIOS. Что же такое BIOS? BIOS - это программа, вшитая в специальный чип на материнской плате. Простые смертные могут заменять содержимое этого чипа только специальными программами перепрошивки. Зачем нужна BIOS? BIOS нужна для обеспечения базовой функциональност опять же базового набора оборудования (монитор, жесткий диск, дисковод, CD-ROM), диагностики оборудования, а так же первоначальной загрузки компьютера. Т.е. без нее бы компьютер представлял собой не более чем груду железа, соединенного проводами.
"Полезная штука эта BIOS! - скажете вы. - А можно ли ее каким либо образом использовать в своей ОС?". Конечно можно! Более того - нужно. В самом начале разработки своей ОС она окажет вам неоценимую помощь. Более того, отказаться от услуг BIOS вы вряд ли сможете на любом из этапов разработки вашей ОС. Вот такая вот полезная штука BIOS.
&lt;<a href="#next">Пропустить справочную информацию</a>&gt;

Где хранятся настройки компьютера
Некоторых из вас, возможно, интересует следующий вопрос: а где же хранятся настройки системы, такие как время, к примеру? На жестком диске? Нет, в компьютере вообще может не быть жесткого диска (например, в компьютерах, составляющих кластер). В оперативной памяти? Она обнуляется каждый раз при выключении компьютера. Оказывается, есть специальный вид памяти - NV memory (Non-Volatile memory - энергонезависимя память). Чаще всего в персональных компьютерах она представлена запоминающим устройством, называемым CMOS. Некоторым из вас, возможно, будет интересно, как и где храниться информация в CMOS. Поэтому, ниже приведен список адресов и их значений для этого вида запоминающего устройства (данный список взят из англоязычных источников, и многие фразы достаточно трудно адекватно перевести на русский язык. Поэтому, я решил не переводить его не русский язык, а представить как есть):

Адрес           Содержимое

00h             Seconds
01h             Second Alarm
02h             Minutes
03h             Minute Alarm
04h             Hours
05h             Hour Alarm
06h             Day of the Week
07h             Day of the Month
08h             Month
09h             Year
0Ah             Status Register A
0Bh             Status Register B
0Ch             Status Register C
0Dh             Status Register D
0Eh             Diagnostic Status Byte
0Fh             Shutdown Status Byte
10h             Disk Drive Type for Drives A: and B:
                The drive-type bytes use bits 0:3 for the first
                drive and 4:7 for the other disk drive types.
00h             no drive present
01h             double sided 360k
02h             high capacity (1.2 meg)
03h-0Fh         reserved
11h             (AT): Reserved    (PS/2): drive type for hard disk C:
12h             (PS/2): drive type for hard disk D:
                (AT, XT/286): hard disk type for drives C: and D:
Format of drive-type entry for AT, XT/286:
0               number of cyls in drive (0-1023 allowed)
2               number of heads per drive (0-15 allowed)
3               starting reduced write compensation (not used on AT)
5               starting cylinder for write compensation
7               max. ECC data burst length, XT only
8               control byte
Bit
7               disable disk-access retries
6               disable ECC retries
5-4             reserved, set to zero
3               more than 8 heads
2-0             drive option on XT (not used by AT)
9               timeout value for XT (not used by AT)
12              landing zone cylinder number
14              number of sectors per track (default 17, 0-17 allowed)
13h             Reserved
14h             Equipment Byte (corresponds to sw. 1 on PC and XT)
15h-16h         Base Memory Size      (low,high)
17h-18h         Expansion Memory Size (low,high)
19h-20h         Reserved
                (PS/2) POS information Model 50 (60 and 80 use a 2k
                CMOS RAM that is not accessible through software)
21h-2Dh         Reserved (not checksumed)
2Eh-2Fh         Checksum of Bytes 10 Through 20  (low,high)
30h-31h         Exp. Memory Size as Det. by POST (low,high)
32h             Date Century Byte
33h             Information Flags (set during power-on)
34h-3Fh         Reserved - Put Your Name Here.

BDA - BIOS Data Area
BIOS Data Area используется BIOS для управления ресурсами системы и различными периферийными устройствами. BDA размещается, начиная с адреса <tt>0040h</tt>. Справочную информацию по BDA вы можете получить здесь<a name="next"></a>[/html]
Загрузочное устройство
Загрузочное устройство - это устройство, с которого можно загрузить программу, обеспечивающую интерфейс между пользователем и компьютером (я намеренно не пишу здесь "", т.к. тогда бы определение было не верным). Чаще всего показателем того, что устройство действительно загрузочное является загрузочный сектор. Существуют некоторые оговорки в отношении CD-ROM, но мы не будем рассматривать в данной рассылке подобные специфические вещи. Те, кому интересно в скором времени смогут найти статьи об этом на OSRC, который все еще в разработке.
Загрузочный сектор
Загрузочный сектор - это область на диске, содержащая код, производящий дальнейшую загрузку программы, обеспечивающей необходимый интерфейс между компьютером и человеком. Он размещается в самом начале загрузочного диска (нулевой цилиндр, нулевая головка, первый сектор). Обычно загрузочный сектор ограничен 512 байтами. В качестве подтверждения своей действительност ЗС содержит значение "<tt>0AA55H</tt>" на смещении <tt>510</tt>.
Процесс загрузки
В этом разделе я описываю процесс первоначальной загрузки компьютера. Вся информация взята из документа "BIOS Boot Specification v1.01", авторами которого являются Compaq, Phoenix and Intel, т.е. описываю загрузку, используя информацию из самых первых рук . Итак, процесс загрузки:

<ul>
<li>Включение питания компьютера.</li>
<li>Загрузка драйверов, обеспечивающих базовый ввод/</li>
<li>POST(<b>P</b>ower <b>O</b>n <b>S</b>elf <b>T</b>est - самодиагностикаоборудования при начальной загрузке компьютера)</li>
<li>Проверка загрузочных устройств, в соответствии со списком очередности загрузки (он изменяется в настройках BIOS)</li>
<li>Если найден "" загрузочный сектор, то он загружается по адресу 0:7C00h и туда передается управление. При передаче управления инициализироваными являются только BDA и прерывания BIOS (10h - 1Ah). Память в этот момент в большинстве своем не содержит никаких данных, однако не обязательно является очищеной.</li>
</ul>

Послесловие
Это все. Ничего больше для дальнейшего курса обучения нам необходимо не будет. Конечно, в этом процессе есть свои оговорки, но о них вы сможете почитать в отдельных статьях. Загрузочный сектор мы рассмотрим в следующем выпуске. До свидания!


это контент от Центр информации по операционным системам
( http://www.osrc.info/plugins/content/content.php?content.4 )