22

Как BIOS управляет устройствами ввода-вывода без каких-либо драйверов?

Например, как отображается изображение во время загрузки компьютера, если в BIOS нет драйверов для видеокарты.

Существует ли какой-нибудь универсальный драйвер, который является стандартным для всех BIOS и аппаратного обеспечения, который позволяет BIOS выполнять основные функции независимо от того, какое оборудование установлено.

Любая помощь будет оценена.

Благодарю.

2 ответа2

22

BIOS в ПК должен был выполнять функцию, аналогичную BIOS в 8-битной системе CP/M, популярной до того, как ПК вступил во владение в середине 80-х годов. BIOS должен был содержать минимальный загрузчик и аппаратно-зависимые низкоуровневые подпрограммы для ввода и вывода нескольких устройств (экран, диск, лента, COM-порт). Знания, необходимые для этого, были встроены в ПЗУ - драйвера не нужны, и, конечно, никакое дополнительное оборудование не поддерживается этим ПЗУ. (Такие вещи, как управление питанием и ACPI появились намного позже, в 90-х, после того, как ПК зарекомендовал себя как повсеместная платформа.)

("Файловая система" CP/M находилась в компоненте, загруженном с диска, называемого BDOS - аналогично, знание файловой системы FAT и ее интерфейсов находится (по крайней мере в одном из) в двух скрытых файлах MSDOS.SYS или IO.SYS - не является частью ПЗУ BIOS.)

Тем не мение ... BIOS ПК, в отличие от CP/M, поддерживает понятие "Option ROMS", которое может быть включено в карту расширения. Так что был как минимум минимальный механизм для расширения BIOS. Видеокарты, начинающиеся с CGA (MDA, предшественник CGA, возможно, сделали это тоже), имели бы дополнительное ПЗУ, которое расширяло или добавляло функции ввода / вывода к интерфейсу BIOS. (Вот почему вы видите сообщение NVidia до загрузки BIOS.) Как и жесткие контроллеры и карты SCSI. Все это до сих пор. Многие старые сетевые карты имеют разъем для загрузочного ПЗУ.

Помните также, что производители клонов ПК, возникшие в 80-х годах, очень быстро решили не предоставлять только совместимый интерфейс BIOS, но в итоге вынуждены были копировать платформу ПК в целом, включая все низкоуровневое оборудование, такое как микросхема таймера , контроллер прерываний и т. д. (Это было относительно легко, так как мало что было частным из IBM.) Это произошло потому, что BIOS не торопился, и программисты обращались к оборудованию напрямую, особенно для игр.

Таким образом, между дополнительными ПЗУ и этим консенсусом стандартного оборудования, которое формирует платформу ПК, а также тем фактом, что он поддерживается обратной совместимостью на протяжении всей эволюции ПК, что-то желающее использовать дисплей без драйвера может:

  • использовать стандартные интерфейсы BIOS, которые могут быть "подключены" дополнительным ПЗУ в видеооборудовании
  • или делать предположения о том, какое оборудование находится в системе, и напрямую обращаться к базовому оборудованию

Все аппаратные средства отображения ПК все еще работают в «VGA-совместимом» режиме после загрузки. Оригинальный адаптер IBM VGA имел режимы, совместимые с более ранними картами EGA, CGA и MDA. Все это означает, что что-то, работающее из BIOS или из-за пределов ОС, может предполагать, что оно все еще может считывать и записывать ту же память, подключенную к дисплею, что и в 1985 году, в соответствии с соглашением.

13

Есть ли в BIOS какие-то общие «драйверы»

Как BIOS управляет устройствами ввода-вывода без каких-либо драйверов?

Стандарты. Все компоненты реализуют базовый интерфейс, и BIOS запрограммирован на его использование. Конечно, поскольку это базовый интерфейс (это то, что означает «B» в BIOS), он не может использовать все возможности аппаратного обеспечения; это остается за программным обеспечением для реализации через драйверы, которые могут напрямую обращаться к оборудованию

Первоначально производители BIOS создали набор API-интерфейсов, которые устройства должны были использовать, если они хотели быть совместимыми. Они делали это с помощью « прерываний », что позволяет устройству прерывать программу, чтобы дать ей понять, что что-то произошло, и наоборот.

Например, как отображается изображение во время загрузки компьютера, если в BIOS нет драйверов для видеокарты.

В случае отображения перед загрузкой встроенное программное обеспечение видеоадаптера реализует VESA (Ассоциация стандартов видеоэлектроники), которая была создана для упрощения доступа к оборудованию дисплея. BIOS знает, как получить доступ к видеооборудованию, используя стандартные функции. Это несколько похоже на то, как DirectX был реализован как высокоуровневый API для аппаратного обеспечения, поэтому программистам не приходилось учитывать каждую аппаратную конфигурацию.

Существует ли какой-то универсальный драйвер, который используется во всех BIOS и аппаратном обеспечении, который позволяет BIOS выполнять основные функции независимо от того, какое оборудование установлено.

Вроде, как бы, что-то вроде. Это не драйвер, а стандартный API ; набор функций программирования, которые можно использовать для выполнения основных задач, таких как инициализация устройства или ввод и вывод данных.

Если производители хотят продавать свои продукты, им необходимо убедиться, что они хотя бы реализуют стандартные API, чтобы они были совместимы. Таким образом, система может обнаруживать оборудование, а в случае устройств, критичных к загрузке, они могут обращаться к ним на базовом уровне, пока не будет загружен программный драйвер, который знает, как получить к ним полный доступ.

Всё ещё ищете ответ? Посмотрите другие вопросы с метками .