При включении блок питания вырабатывает сигнал аппаратного сброса, приводящего все узлы в исходное состояние. Этот же сигнал вырабатывается и при нажатии кнопки Reset. Во время действия сигнала аппаратного сброса процессор пассивен — он не управляет системной шиной. Процессор подготавливается к работе, воспринимая со своих выводов сигналы, задающие его конфигурацию (коэффициент умножения, роль в многопроцессорных системах и некоторые другие параметры). Внутренний кэш очищается, регистры (не все) приводятся в определенное состояние. Сигнал сброса поступает на все устройства (контроллеры и адаптеры), нуждающиеся в переводе в исходное состояние и находящиеся на системной плате или подключаемые к шинам расширения. После окончания сигнала процессор по определенному адресу выбирает из памяти и исполняет первую инструкцию — управление передается на точку входа в программу инициализации компьютера (POST). Первым делом необходимо выполнить инициализацию процессора — установить значения некоторых регистров. После сброса процессор всегда начинает работу в реальном режиме (совместимом с 8086/88). Далее происходят проверка работоспособности и инициализация подсистем компьютера. Эта «раскрутка» выполняется в несколько этапов, причем постепенно в работу вовлекаются протестированные подсистемы. Поначалу программа может смело пользоваться только регистрами процессора и постоянной памятью (которые тоже желательно проверить, например, подсчитать контрольную сумму). Если ПЗУ исправно, можно двигаться дальше, в противном случае лучше остановиться. Пока неизвестна работоспособность ОЗУ, оперативной памятью пользоваться нельзя и, следовательно, недоступны вызовы процедур и обработка прерываний (вызвать-то процедуру можно, а вот возврат не гарантируется, поскольку адрес возврата берется из стека, то есть из ОЗУ). Далее инициализируется ОЗУ (программируются регистры чипсета, заведующие настройкой контроллера памяти и регенерацией) и выполняется тестирование небольшого блока в начале ОЗУ. Если тест проходит успешно, то для дальнейшей работы уже можно пользоваться и вызовами, и прерываниями (не забыв проинициализировать таблицу прерываний), и задействовать память для хранения переменных — в таком окружении работать гораздо удобнее. Затем можно проинициализировать и протестировать дисплейный адаптер, и дальнейшая раскрутка пойдет уже с «ожившим» экраном. Далее тестируют ОЗУ в полном объеме, определяют наличие контроллеров и адаптеров, инициализируют их и тестируют. После этого программа POST узнает реальную конфигурацию компьютера и готова к загрузке операционной системы. Векторы прерываний, за которые отвечает BIOS, проинициа-лизированы — ими можно пользоваться. В этот момент можно войти в меню встроенной утилиты конфигурирования CMOS Setup и изменить настройку различных подсистем компьютера. После окончания работы этой утилиты тест POST приходится выполнять снова — конфигурация может стать уже иной. Программа POST завершается вызовом процедуры начальной загрузки. Подробнее о работе и диагностических сообщениях POST можно узнать в 5.2.
Для процессоров, начиная с шестого поколения, у POST есть дополнительная забота — загрузить «заплатки» микропрограмм самого процессора (см. 7.4). Эти заплатки позволяют исправлять некоторые ошибки, выявленные в процессорах определенных моделей и партий выпуска. Без них основные функции процессор, конечно, выполнять будет, но в современных сложных операционных системах и приложениях, как говорится, возможны варианты. Информация о том, какие заплатки требуются конкретному процессору, и сами заплатки хранятся в ROM BIOS. Если BIOS про установленный процессор (какой именно процессор установлен, POST может определить программно — см. 7.6) «ничего не знает», то и заплатки не загрузит. По этой причине может потребоваться обновление версии BIOS, что для современных системных плат выполняется довольно просто (если производитель своевременно выкладывает образ BIOS на своем веб-сайте).
В процессе выполнения программа POST отыскивает модули расширений ROM BIOS — сначала в известном месте (по адресу COOOOh) ищется ROM BIOS графической карты, а позже ищутся модули карт расширения (в зоне C8000-F4000h). Найденные модули инициализируются, при этом могут переопределяться векторы прерываний, по которым вызываются некоторые сервисы BIOS.
К моменту окончания теста POST все стандартные устройства (клавиатура, дисплей, диски, порты) приводятся в состояние готовности к работе в стандартном режиме по умолчанию, часть настроек может выполняться в соответствии с выбранными установками CMOS Setup. Список обнаруженных устройств и их основные параметры могут отображаться в таблице на экране, но возможна и такая настройка CMOS Setup, при которой экран будет пустым до появления логотипа (или текстового сообщения) загружаемой ОС.