Базовая система вводавывода
Базовая система ввода-вывода.
Базовая система ввода-вывода компьютера, наполовину относится к программному, а наполовину к техническому обеспечению. С её помощью реализуются отсутствующие связи этих двух компонент, позволяющие компьютеру принимать рабоВнтоспсобное состояние. Как и всё программное обеспечение BIOS - набор команд микропроцессора. Подобно техническому обеспечению инструкции BIOS не мимолётны. Из за своей двойственной природы и промежуточного положения между прогВнраммным и техническим обеспечением эту систему часто отВнносят к микропрограммному обеспечению.
BIOS совместимых с IBM компьютеров является очень спеВнцифическим микропрограммным обеспечением, включающем в себя подпрограммы, тестирующие компьютер; дающие возможность, используя только языки программирования без всякого дополВннительного программного обеспечения работать с компьютером.
Для обеспечения совместимости компьютера с IBM необхоВндимо обеспечить его совместимость с BIOS IBM. Это не совсем простая задача. BIOS защищена от копирования другими произВнводителями. В результате, вместо использования кодов BIOS IBM, производителю приходится разрабатывать свою собственВнную систему ввода-вывода. Многие фирмы разрабатывают прогВнраммы BIOS самостоятельно.
Некоторые подпрограммы BIOS работают отдельно, хотя вся система может быть зашита внутри одного чипа. Они рабоВнтают как множество отдельных резидентных программ, которые не выгружаются после выполнения. Они всегда в памяти и всегда ждут обращения.
Одной из самых важных характеристик BIOS, определяющей совместимость программного и технического обеспечения, явВнляется конкретный набор резидентных подпрограмм, реализуюВнщий связь этих двух компонент.
Разработка любого компьютера требует, чтобы множествоВнэлементов технического обеспечения были обеспечены специВнальными адресами в пределах диапазона портов ввода-вывода. Другие компоненты компьютера имеют множество своих собственных регистров, которые используются для реализации их функций. Так как компьютер состоит из большого числа внутренних компонент, число реализации компьютеров из этого набора безгранично. В то же время, программное обеспечение, реализующее управление данными устройствами, должно точно знать адреса его регистров. Если бы все компьютеры имели только одну конфигурацию проблем бы не было.
Однако в первых же PC, IBM предусмотрела возможность изменять конфигурацию технического обеспечения в будущем. Это означало, что любой из портов или регистров компьютера может иметь другие адреса в последующих модификациях. Тогда IBM не рассчитывала, что программам может понадобиться пряВнмая адресация. Вместо этого предполагалось, что программы будут обращаться к BIOS, которая будет содержать постоянную адресную часть кодов. Позже компьютеры с изменённой конфиВнгурацией технического обеспечения могли использовать прогВнраммное обеспечение своих старших собратьев благодаря настВнройке BIOS. Для этого адресация внутри программ BIOS могла изменяться, чтобы удовлетворить новым разработкам техниВнческого обеспечения.
Проблема BIOS в том, что ограниченным числом программ невозможно оптимальным образом накрыть все потребности программного обеспечения. Таким образом использование подпВнрограмм BIOS является иногда благом, а иногда обузой. В частности, эти подпрограммы реализуют некоторые функции компьютера очень медленно. Проблема производительности осоВнбенно остро стоит при работе с видеодисплеем. Например, все подпрограммы IBM BIOS реализуют пересылку информации на дисплей по одному символу. Прямое управление техническим обеспечением позволяет реализовать эту функцию намного быстрее.
Другое неприятное ограничение при работе с BIOS - это то, что компьютер не может ничего делать вне этой системы. Например, драйверы гибкого диска при работе в своих станВндартных режима прекрасно уживаются с подпрограммами BIOS, позволяющими читать, писать и форматировать диски, испольВнзуя стандартные дисковые форматы IBM. В то же время они накладывают ограничение на то что эти устройства могут деВнлать. Однако драйверы гибких дисков сами по себе способны на большее: они могут работать в форматах других компьютерВнных систем, а так же использоваться для защиты от копироваВнния.
Для увеличения быстродействия работы видеосистемы или драйверов гибких дисков необходимо отказаться от использоВнвания BIOS и использовать программы, которые напрямую обраВнщаются к устройствам. Такая концепция претит идеям IBM и может привести к несовместимости. Однако написано так много программ, которые позволяют себе напрямую обращаться к устВнройствам технического обеспечения, что некоторые выявляющиВнеся характеристики компьютера являются более стандартизоВнванными, чем сама BIOS. Большинство совместимых компьютеров реализуют свои функции, имитируя техническое обеспечение PC. Но их BIOS разрабатывалась не только исходя их ограаниВнченийна использование системы IBM. По многим параметрам таВнкое техническое обеспечение более стандартизировано, чем микрообеспечение BIOS. Даже IBM пришлось отказаться от огВнраничения работы с видеодисплеем только через BIOS для увеВнличения быстродействия соответствующих операций.
Тем не менее, BIOS обладает большим рядом достоинств. В большинстве случаев эта система облегчает программисту работу. Операционные системы всегда в его распоряжении. Подпрограммы системы хорошо документированы и понятны, что позволяет избавить пользователей от многих забот.
BIOS PC
Дебют BIOS РС состоялся вместе с презентацией первой РС. Начиная с этого времени, эта система имеет самое больВншое число копий в мире. Все совместимые компьютеры должны скопировать работу BIOS РС без копирования самих кодов этой системы.
Как работает BIOS
BIOS реализует свои функции через систему прерываний програмного обеспечения. Для запуска подпрограммы, содержаВнщей специальную инструкцию микропроцессору по обработке каВнкой-либо конкретной ситуации, выполняемая программа устаВннавливает соответствующий флажок прерывания.
Прерывания програмного обеспечения приводят к тому, что микропрооцессор приостанавливает выполнение текущей раВнботы и начинает выполнять подпрограмму по обработке прерыВнвания. Для реализации этого механизма микропроцессор, выВнполнив какую-либо элементарную операцию, исследует векторы прерываний. Если прерывание выставлено, коды выполняемой программы запоминаются, чтобы после обработки прерывания выполнение прерванной программы могло быть продолжено. КажВндый вектор прерывания является указателем, говорящим микВнропроцессору, где находятся коды по обработке данного преВнрывания. Микропроцессор читает значение вектора и начинает выполнять программы по указанному вектором адресу.
Список векторов прерываний начинается с самого начала памяти микропроцессора по адресу 00000(Hex). Каждый вектор занимает 4 байта памяти, и все они располагаются в памяти по возрастающей. Недостающие значения для каждого вектора загружаются в оперативную память с ПЗУ, содержащих BIOS при загрузке компьютера. Программы могут изменять вектора преВнрываний для изменения значений прерываний програмного обеспечения. Обычно завершающиеся и остающиеся резидентными программы реализуют подобные корректировки векторов для своих собственных целей.
Так как число имеющихся прерываний может оказаться намного меньше того числа функций, которое вы хотели бы использовать в своих программах, некоторые прерывания BIOS используются для реализации нескольких функций. Эти функции реализуются при помощи передачи параметров. Параметры обраВнбатываются подпрограммами BIOS. Их значения заносятся в один или более регистров при установке флажка прерываний. В свою очередь, подпрограммы BIOS могут передавать результаты назад в выполняемую программу.
Изменение BIOS РС
Главное отличие первых машин IBM PC с максимальным обьемом памяти в 64К от РС с памятью в 256К кроется в BIOS. При разработке первой системы прерывания, естественно, не учитывалась возможность включения в конфигурацию РС жестких дисков. Поэтому система не содержала возможности по автомаВнтическому наращиванию дополнительных кодов. То есть она быВнла не расширяемой.
BIOS РС-2 и, естественно, появившиеся позже ХТ, как и соответствующие совместимые компьютеры, решили эту проблему добавлением специального кода в подпрограммы BIOS. Эта функция реализовывалась на последнем шаге процедуры загрузВнки, когда загружались дополнительные коды BIOS.
Рубикон был перейден 27 октября 1982 года. Более ранВнние системы BIOS являются не расширяемыми.
Определение даты разработки BIOS
Машины РС-1 легко определить по используемой ими памяВнти. Любой компьютер IBM, способный комплектоваться только чипами памяти по 16 Кбит, с общим обьемом памяти на своей системной плате в 64К, относится к этому классу машин. Если у вас такая машина, быстрее всего, вы имеете нерасширенную BIOS.
Однако этот метод не всегда хорош. Вы можете не отлиВнчить одну микросхему памяти от другой. Либо у вас, попВнросту, нет никакого желания лезть в корпус вашего компьютеВнра. Кроме того, если выкупили подержанную машину или кто-либо без вашего участия осуществлял установку компьютеВнра, BIOS могла быть скорректирована без вашего уведомления. IBM продает сейчас громадное множество вариантов этой системы для старых компьютеров, что позволяет им работать с расширяемой BIOS.
Самый верный способ установить, какой BIOS пользуется ваш компьютер, - это использовать отладчик DOS.
Для этого необходимо запустить эту программу и выдать ей следующую команду:
D F000:FFF0
После этого на вашем экране появится загадочная строка символов. Горизонтально она разделена на три части. Слева указывается адрес памяти, с которого начинается отображение 16 байт. Центральный блок символов содержит индивидуальное значение каждого из этих 16 байт памяти. Правый блок представляет эти значения в кодах ASCII. У правой границы строки вы можете найти дату вашей BIOS.
Продолжение истории BIOS
Помимо описанной выше корректировки BIOS, она претерВнпела еще несколько изменений. Это происходило каждый раз для совершенствования системы при разработке новых компьВнютеров или новых системных плат в рамках уже существующих моделей. Наиболее радикальные изменения претерпела BIOS PS/2, когда был представлен микроканал. Улучшенная BIOS реВнализовывала возможности нового защищенного режима.
Каждая BIOS после PC-1 является расширяемой. Вовремя загрузки компьютера читается дополнительная секция кодов, содержащихся в дополнительных платах и их инструкции приВнбавляются к существующему диапазону. Например новые подпВнрограммы прерываний могут быть добавлены либо в функции суВнществующих подпрограмм, либо могут быть изменены.
Во время самотестирования, после загрузки векторов прерываний ОЗУ, резидентный код BIOS заставляет компьютер проверить байты своего ПЗУ в соответствующем адресном диаВнпазоне. Если найден значащий байт, процессор проверяет последующую секцию кодов, разрешая расширению BIOS после проведения циклической проверки блоков по 512 байт. ЗначеВнния каждого байта в блоке суммируются по модулю, результат делится на 4096. Нулевой остаток говорит о том, что расшиВнрение BIOS имеет правильное значение.
Дополнительные секции кодов маркируются специальным значением, помещаемым перед ним. Затем после этих двух байВнтов - третий байт указывает дополнительную длину секции BIOS. Значение третьего байта указывает на количество блоВнков по 512 байт, необходимых для дополнительных кодов.
Если система распознала соответствующую секцию кодов, выполняемая программа BIOS переходит к четвертому байту расширяемой BIOS и выполняет любые функции, описанные здесь в машинных кодах. После выполнения инструкции расширенной BIOS управление передается резидентной BIOS. Затем система продолжает поиск дополнительных блоков расширенной BIOS. После завершения этой процедуры начинается процесс загрузки компьютера с диска.
Вместе с этим смотрят:
Базовая система вводавывода (BIOS)Базовые алгоритмические структуры
Базовые алгоритмические структуры. Вложенные циклы
Базовые алгоритмические структуры. Цикл с условием