Системная BIOS
Во всех системных платах есть микросхема, в которой записано программное обеспечение, называемое BIOS или ROM BIOS.
🕛 23.10.2009, 14:45
Эта микросхема содержит стартовые программы и драйверы, необходимые для запуска системы и функционирования основного аппаратного обеспечения. В ней также содержится процедура POST (самотестирование при включении питания) и данные системной конфигурации. Все эти параметры записаны в CMOS-память, которая питается от батарейки, установленной на системной плате. Эту CMOS-память часто называют NVRAM (Non-Volatile RAM).Таким образом, BIOS представляет собой комплект программ, хранящихся в одной или нескольких микросхемах. Эти программы выполняются при запуске компьютера до загрузки операционной системы. BIOS в большинстве PC-совместимых компьютеров выполняет четыре основные функции.
- POST - самотестирование при включении питания процессора, памяти, набора микросхем системной логики, видеоадаптера, контроллеров диска, дисковода, клавиатуры и других жизненно важных компонентов системы.
- Программа установки параметров BIOS (Setup BIOS) - конфигурирование параметров системы. Эта программа запускается при нажатии определенной клавиши (или комбинации клавиш) во время выполнения процедуры POST. В старых компьютерах на базе процессоров 286 и 386 для запуска этой программы необходима специальная дискета.
- Загрузчик операционной системы - подпрограмма, выполняющая поиск действующего основного загрузочного сектора на дисковых устройствах. При обнаружении сектора, соответствующего определенному минимальному критерию (его сигнатура должна заканчиваться байтами 55AAh), выполняется код начальной загрузки. Программный код MBR продолжает процесс загрузки, считывая первый физический сектор загрузочного тома, который представляет собой начало записи загрузки тома (Volume Boot Record - VBR). Посредством записи VBR загружается первый файл инициализации операционной системы, будь то IO.SYS (DOS/Windows 9x/Me) или NTLDR (Windows NT/ 2000/XP), отвечающий за управление этапом ее загрузки.
- BIOS - набор драйверов, предназначенных для взаимодействия операционной системы и аппаратного обеспечения при загрузке системы. При запуске DOS или Windows в режиме защиты от сбоев используются драйверы устройств только из BIOS.
Микросхемы ROM
Память типа ROM (Read-Only Memory) может постоянно (или практически постоянно) хранить данные. Эти записанные данные хранятся в памяти даже при отключении питания. Таким образом, для хранения стартовых процедур (и BIOS) наиболее подходит память ROM. Аналогичная память используется и в других устройствах с собственной BIOS, например в видеоадаптерах.
Заметьте, что ROM и оперативная память - не противоположные понятия. На самом деле ROM представляет собой часть оперативной памяти системы. Другими словами, часть адресного пространства оперативной памяти отводится для ROM. Это необходимо для хранения программного обеспечения, которое позволяет загрузить операционную систему.
Например, при включении компьютера счетчик команд автоматически принимает значение (адрес) FFFF0h; команды, размещенные по этому адресу, должны обеспечить загрузку операционной системы. Этим командам отводится ровно 16 байт от конца первого мегабайта оперативной памяти и от конца ROM. Если бы эти адреса указывали на ячейки обычной памяти, все хранимые в ней данные, в том числе и команды, исчезли бы при выключении питания и процессор при следующем включении не нашел бы там никаких команд. Но, если этот адрес указывает на ячейку ROM, программа запуска системы в неизменном виде выполняется каждый раз при включении компьютера.
Обычно первым адресом ROM системы является F0000h, расположенный за 64 или 128 Кбайт от конца первого мегабайта. Поскольку емкость ROM обычно равна 128 Кбайт, программы ROM полностью занимают последние 128 Кбайт первого мегабайта, включая критический адрес FFFF0h первой команды запуска. Емкость современных микросхем ROM может достигать 256 или 512 Кбайт. Такой увеличенный объем позволяет располагать драйверы интегрированных на системной плате устройств.
На рис. 5.2 показана карта распределения первого мегабайта памяти.
Кажется странным, что при запуске компьютер начинает выполнять команду, расположенную за 16 байт от конца ROM, но это сделано умышленно. Просто по этому адресу помещается команда перехода JMP, согласно которой процессор переходит к фактическому началу программы; в большинстве случаев оно близко к адресу F0000h, который расположен примерно на 64 Кбайт ранее в карте памяти. Это все равно что начинать чтение книги с 16-й страницы от конца; причем на ней должен быть указан номер страницы, с которой фактически начинается изложение. Зато подобное соглашение позволяет свободно изменять объем ROM.
Основной код BIOS содержится в микросхеме ROM на системной плате, но на платах адаптеров также есть аналогичные микросхемы. Они содержат вспомогательные подпрограммы BIOS и драйверы, необходимые для конкретной платы, особенно для тех плат, которые должны быть активизированы на раннем этапе начальной загрузки, например для видеоадаптера. Платы, не нуждающиеся в драйверах на раннем этапе начальной загрузки, обычно не имеют ROM, поскольку их драйверы могут быть загружены с жесткого диска позже - в процессе начальной загрузки.
На платах адаптеров, для которых при запуске требуются драйверы, также размещены микросхемы ROM. Это видеоадаптеры, большинство плат SCSI (Small Computer Systems Interface), платы контроллеров ATA и некоторые сетевые платы. Микросхема ROM на этих платах содержит драйверы и программы запуска, которые будут выполнены при начальной загрузке. Программа, хранящаяся в ROM системной платы, сканирует специальную область адаптера ROM оперативной памяти (адреса C0000-DFFFFh) в поисках пары байтов сигнатуры (55AAh), которая указывает на начало ROM.
. - память, доступная программам (стандартная память)
G - область памяти для видеопамяти графического режима
М - область памяти для видеопамяти монохромного текстового режима
С - область памяти для видеопамяти цветного текстового режима
V - область памяти для BIOS видеоадаптеров
а - область памяти плат адаптеров и памяти специального назначения
г - дополнительная область памяти системной BIOS в других системах
R - область памяти системной BIOS
Основная память:
Логическая карта памяти первого мегабайта
Адреса ПЗУ всех адаптеров должны начинаться с 55AAh; в противном случае системная плата просто их не распознает. Третий байт указывает размер ПЗУ в единицах, кратных 512 байтам, которые называются абзацами, а четвертый байт соответствует фактическому началу драйверов. Байт размера используется ПЗУ системной платы в целях тестирования. ПЗУ системной платы добавляет все байты в ПЗУ, после чего делит полученную сумму на количество байтов. Остаток от деления должен быть равен 100h. Поэтому при написании программы для ПЗУ адаптера программист обычно использует байт “заполнения”, что позволяет получить необходимую контрольную сумму. Используя значение контрольной суммы, системная плата проверяет ПЗУ каждого адаптера во время выполнения процедуры POST.
Базовая система ввода-вывода системной платы автоматически выполняет программы в ROM любого адаптера, который она находит в процессе сканирования. Процесс обнаружения и инициализации видеоадаптера можно наблюдать в большинстве компьютеров при включении питания и во время выполнения POST.