Мне всегда было интересно, имеет ли BIOS (помимо проведения POST, запуска загрузчика и передачи управления ОС после нажатия кнопки питания) какое-либо назначение или функцию во время работы операционной системы?
Взаимодействует ли операционная система с BIOS во время работы, и если да, то каким образом?
решение1
С современными ОС,практически нет. По сообщениям, Линус Торвальдс сказал, что его задача — «просто загрузить ОС и убраться оттуда к черту».
Старые операционные системы, такие как MS-DOS, использовали BIOS для многих задач (например, доступа к диску), вызывая прерывания.
В современных ОС загрузчик быстро переключается в 32- или 64-битный режим и выполняет ядро ОС. Ядро может регистрировать собственные обработчики прерываний, которые могут вызываться приложениями пользовательского пространства. Процедуры ядра могут быть более переносимыми (поскольку они не зависят от конкретного оборудования), более гибкими (поставщики ОС могут менять их по требованию, а не использовать то, что идет с оборудованием), более сложными (они могут выполнять произвольно сложный код, а не то, что было запрограммировано в BIOS) и более безопасными (поскольку ОС может контролировать доступ к общим ресурсам и не допускать, чтобы программы затирали друг друга, реализуя свои собственные произвольные схемы разрешений).
Для взаимодействия с определенным оборудованием ОС может загружать и использовать собственные драйверы устройств. Поэтому ОС или приложениям вообще не нужно вызывать большинство процедур BIOS. Фактически, по соображениям безопасности прерывания BIOS даже отключены. Поскольку BIOS работает в 16-битном реальном режиме, для современных ОС это сделать сложнее.
Хотя использование BIOS во время работы ОС весьма ограничено, его функции по-прежнему используются на периферии.Например, когда компьютер спит, ОС не работает, и в конечном итоге это происходит из-за прошивки, которая устанавливает аппаратное обеспечение в правильное состояние, чтобы приостановить и возобновить работу ОС. Эти виды использования обычно ограничиваютсяACPIвызовы, а не вызовы полного интерфейса BIOS. ACPI — это расширение BIOS, которое«передает управление питанием под контроль операционной системы (OSPM), в отличие от предыдущей системы с центральным BIOS, которая полагалась на специфичную для платформы прошивку для определения политики управления питанием и конфигурации».
Обратите внимание, что официально «BIOS» относится к определенному интерфейсу прошивки, но этот термин обычно используется для обозначения прошивки компьютера в целом. Некоторые современные компьютеры (особенно Apple) заменили BIOS (в строгом смысле) наУЕФИ, который, конечно же, призван реализовать эти функции.
Более подробную информацию о том, как роль BIOS со временем уменьшилась, см.Википедия.
решение2
BIOS предоставляет ряд служб операционным системам, большинство из которых связаны с управлением питанием:
- изменение тактовой частоты процессора и шины
- включение/отключение устройств материнской платы
- управление питанием порта расширения
- приостановка на диск и приостановка в ОЗУ
- возобновление настроек событий
Функция приостановки на диск в большинстве случаев реализована в ОС, поскольку ОС может быстрее восстанавливать свое состояние (перезагружается только состояние ядра, а состояние программы заменяется при необходимости, что значительно быстрее, чем перезагрузка всей оперативной памяти), но эта функция остается в спецификации.
Suspend-to-RAM не может быть реализована ОС, поскольку она полагается на BIOS, пропускающий инициализацию и тестирование RAM, поэтому ОС требуется API, чтобы сообщить BIOS, что она намерена возобновить работу с текущим содержимым RAM. Чтобы предоставить эту услугу, BIOS просит ОС оставить определенную область RAM нетронутой.
Интерфейс для ОС для всех служб BIOS — это часть кода виртуальной машины, которую необходимо запустить на эмуляторе, и которая генерирует необходимые операции ввода-вывода в оборудование. Для приостановки это обычно реализуется так, что выполнение одной из операций записи оборудования затем запускает прерывание, которое передает управление BIOS.
решение3
В современных системах есть три основные области, в которых ОС использует BIOS, например, те, которые используют стандарт UEFI. Первая — это ряд служб, известных как службы времени выполнения UEFI. Эти службы позволяют ОС собирать информацию, известную только BIOS, например, время использования BIOS, порядок загрузки, текущий профиль безопасности пользователя, информация о материнской плате, модулях DIMM и т. д.
Второй — режим управления системой, представляющий собой скрытый раздел памяти (SMRAM), доступ к которому осуществляется через высокоприоритетное прерывание (SMM). Многие BIOS используют это для реализации высокозащищенных функций OEM или для реализации аппаратных обходных путей.
Третий — ACPI. ACPI предоставляет данные конфигурации, управления питанием и аппаратные данные и код, используемые ОС для дополнения того, что драйверы ОС могут узнать с помощью отраслевого стандарта или драйвера устройства. Например, есть ли специальный сигнал для управления питанием жесткого диска или есть ли специальный способ общения с батареей, который не охвачен стандартом.
Тим
решение4
В дополнение к вышесказанному, Intel начинает двигаться в другую сторону и встраивать больше, предоставляя внешний доступ к оборудованию черезТехнология активного управлениявстроенный в биос и материнскую плату, который можно контролировать независимо от ОС. С этими платами вы действительно можете сделать довольно много. Считать ли вы его встроенным или второй ОС — это другой вопрос, но поскольку у него есть аппаратное обеспечение на борту и компоненты в биосе, я придерживаюсь встроенного.