Скачать

Базовая система вводавывода

Базовая система ввода-вывода.

Базовая система ввода-вывода компьютера, наполовину относится к программному, а наполовину к техническому обеспечению. С её помощью реализуются отсутствующие связи этих двух компонент, позволяющие компьютеру принимать рабо­тоспсобное состояние. Как и всё программное обеспечение 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. После завершения этой процедуры начинается процесс загрузки компьютера с диска.