На самом деле, “чисто” описать, как компьютер инициализируется, не получится – во многих системах это происходит с небольшими отличиями, да и надо учитывать набор оборудования, предустановки и пр. Но в основном – это выглядит следующим образом:
Включаем питание – происходит общий сброс логики и процессора, процессор начинает выполнять набор инструкций, которые изначально хранятся в ПЗУ на материнской плате. Набор можно логически разбить на три части:
-Power On Self Test (POST) – запускается только один раз и сразу после включения питания. В этом тесте проверяется аппаратура на наличие грубых ошибок (функционирование аппаратуры вообще). Одним из видимых шагов на экране – тестирование памяти.
Инициализация – запускается каждый раз, когда машина перегружается (например, когда пользователь нажимает Ctrl-Alt-Del) – инициализирует все доступные устройства на плате и в слотах расширения (ISA, PCI, AGP).
Третья часть – это собственно BIOS (BASIC INPUT/OUTPUT SYSTEM) – базовая система ввода/вывода на низком уровне. Этими функциями пользуются некоторые операционные системы (DOS, Windows и др.) Обычно, весь BIOS располагается на отдельном чипе, который программируется на заводе, хотя в современных компьютерах может быть перепрограммирован прямо из системы. Т.е. сейчас используется Flash Memory.
Особенность существующих BIOS в том, что они весьма медленны (гораздо медленнее, чем обычная оперативная память). Поэтому, многие системы просто копируют весь BIOS в оперативную память.
Тест памяти – это наиболее видимая часть теста аппаратуры на этапе POST. Кстати, о видимости – видеоадаптер – тоже аппаратура, и его как раз необходимо инициализировать в первую очередь – чтобы пользователь мог видеть процесс тестирования и инициализации устройств. Так же, необходимо установить еще и режим (частоту обновления, разрешение) экрана. Ведь видеокарты могут быть сделаны разными фирмами, да еще и разные модели – кому как не БИОСу самой карточки знать досконально, как ее нужно инициализировать?
На каждой видеокарте есть свой BIOS, который опрашивается на его наличие при тестировании аппаратуры. Сначала системный БИОС ищет видео по стандартным адресам ISA VGA, – если там нет адаптера, то он ищется на PCI , потом на AGP (или сначала AGP, а потом PCI – это прописывается в установках BIOS SETUP). И если, видеобиос найден в одном из слотов, то управление передается на него.
И вообще, присутствие БИОСа на различных адаптерах заставляет системный БИОС отдавать им управление – в случае с видеоадаптером – это включение режима и т.д., в случае с сетевой картой – загрузка с сети (в случае с бездисковыми машинами – удаленная загрузка с сети) – при наличие BIOS на сетевой карте и наличие жесткого диска БИОС, например, может спросить – как будем грузиться – с сети или с имеющегося HDD? При наличии SCSI адаптера – он должен проинициализировать свои устройства (диски, CD-приводы, ленточные накопители и т.п.) и если таковые найдутся из числа дисков SCSI – необходимо будет поддержать int13 для того, чтобы система могла обращаться к ним, как к обычным жестким дискам. Хотя, инициализация SCSI устройств необязательна – например, при старте, ее можно отключать – если SCSI устройство не является загрузочным, это разумно.
Дальше проверяется наличие жестких дисков (IDE) на контроллере ввода-вывода, дисководов для дискет и пр. подобной периферии. Проверяется клавиатура и после успешной проверки выдается одиночный звуковой сигнал, указывающий, что инициализация прошла успешно (если нет – различным сочетанием звуковых сигналов BIOS сигнализирует об ошибках и/или сообщает о них на экране).
Итак, коротко можно описать следующим образом: все, кроме SCSI, IDE, USB “оживает” сразу – из адаптеров исключение составляет видеоадаптер, который инициализируется даже до проверки памяти. Далее – если в слотах ISA находятся другие устройства, имеющие свои ПЗУ (с BIOS) – они инициализируются на этапе проверки внешних устройств, потом проходит проверка и назначение PCI (проверка устройств Plug and Play). Кстати, PnP есть и на ISA адаптерах.
Только после этого начинается проверка наличия устройств на IDE шине.
Тут может возникнуть вопрос – а как быть, если на ISA нет видеоадаптера, а есть на PCI – но ведь он “оживает” сразу – не дожидаясь даже проверки всего PCI? Просто на PCI есть BIOS, отображаемый в обычное пространство памяти, и все VGA PCI имеют еще и стандаратную VGA программную часть, находящуюся в тех же регистрах, как и в случае, если бы это был ISA адаптер. Системный BIOS проверяет, есть ли VGA на ISA шине – если да, то на PCI шину и “не лезет”, если нет – то сканирует PCI.
Ну, и в конце концов, после инициализации – считывается первый сектор первой дорожки первой головки жесткого диска и управление передается загрузочному сектору, который уже управляет дальнейшими действиями (либо выдается сообщение типа “NO SYSTEM TO BOOT”). Или подобным же образом система грузится с дискеты.