4

Я читаю книгу « Как работают компьютеры: эволюция технологий», а в главе 4 автор говорит:

Операционная система не работает в одиночку. Это зависит не только от сотрудничества с другими программами, но и от того, насколько гладко они работают с BIOS и драйверами программного обеспечения. BIOS или базовая система ввода / вывода состоит из кода, содержащегося в микросхемах ПК. Он выступает в качестве посредника среди аппаратного обеспечения, процессора и операционных систем. Драйверы устройств похожи на специализированный BIOS. Драйверы переводят команды из операционной системы и BIOS в инструкции для определенного оборудования, например принтера, сканера или привода DVD-ROM. Когда некоторые части операционной системы загружаются с диска, они добавляются в BIOS, а затем присоединяются к драйверам устройств, и все они выполняют обычные аппаратные функции. Операционная система действительно состоит из всех трех этих компонентов, а также множества других программ, общего кода и файлов данных.

Важной частью здесь является:

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

Что добавлено в BIOS? Я не знал, что BIOS был изменен ОС? Или я неправильно это понимаю?

1 ответ1

3

Во-первых, следует понимать, что оборудование x86 имеет таблицу дескрипторов прерываний, которая находится в оперативной памяти. На исходном процессоре 8086 это было исправлено в ячейке памяти 0, первой ячейке памяти, но его можно перенести в более поздние и современные процессоры. BIOS изначально устанавливает это в ячейке памяти 0.

IDT - это список 32-битных указателей на подпрограммы в других местах памяти (которые могут быть ПЗУ или ОЗУ), пронумерованные от 0x00 до 0xFF.

В наши дни первые 32 из них зарезервированы для использования самого процессора. Например, общая ошибка защиты вызовет вызов подпрограммы, на которую указывает вектор 0x0D.

Любая подпрограмма, указанная в одном из этих векторов, может быть вызвана с помощью команды программного прерывания INT . Таким образом, INT 0x0D будет вызывать ту же процедуру, что и при вызове общей ошибки защиты.

BIOS эпохи DOS использует многие из них для представления стандартного интерфейса для вызовов BIOS. Некоторые из тех, которые BIOS традиционно использует, совпадают с тем, что использует процессор.

Сама DOS также использовала одно прерывание, 0x21 , чтобы позволить программам стандартный способ вызова функций DOS.

Теперь общеизвестное прерывание BIOS - 0x13 , что позволяет читать или записывать сектор на дисковое устройство.

Во время процесса загрузки область памяти ПЗУ сканируется и вызывается код инициализации любого ПЗУ. На устройствах ISA и PCI может отображаться ПЗУ, которое будет вызываться во время загрузки. ПЗУ устройств может изменять векторы, расширяя или заменяя функциональность BIOS. Карты RAID, предназначенные для работы с DOS и 9x версиями Windows, могут сделать это.

Процедура BIOS инициализирует видеодисплей и позволяет установить режим отображения. Очень часто у видеокарт есть ПЗУ, которое переопределяет это прерывание, чтобы позволить использовать видеокарту во время процесса загрузки BIOS (и DOS, если вы действительно этого хотите).

В конце концов, ничто не останавливает программу, которая инициализирует изменение этих векторов для расширения или замены функций BIOS. Когда некоторые BIOS не могли получить доступ к секторам жесткого диска через барьер 8 Гбайт, некоторые поставщики предоставили загрузочный диск с утилитой, подключенной к Int 0x13, в обход ограничения BIOS.

Так что все это было очень распространено, когда DOS была распространенной операционной системой. В наши дни BIOS, если он все еще существует (UEFI является его преемником), в значительной степени используется только для инициализации и экрана загрузки, а операционная система напрямую обращается к оборудованию - исключение составляют вещи, связанные с управлением питанием.

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