Обеспечение удобного логического интерфейса между устройствами 


Мы поможем в написании ваших работ!



ЗНАЕТЕ ЛИ ВЫ?

Обеспечение удобного логического интерфейса между устройствами



И остальной частью системы

Разнообразие устройств ввода-вывода делают особенно актуальной функцию ОС по созданию экранирующего логического интерфейса между периферийными устройствами и приложениями. Практически все современные операционные системы поддерживают в качестве основы такого интерфейса файловую модель периферийных устройств, когда любое устройство выглядит для прикладного программиста последовательным набором байт, с которым можно работать с по­мощью унифицированных системных вызовов (например, read и write), задавая имя файла-устройства и смещение от начала последовательности байт. Для под­держания такого интерфейса подсистема ввода-вывода должна проделать нема­лую работу, учитывая разницу в организации операций обмена данными, напри­мер, с жестким диском и графическим терминалом.

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

Поддержка широкого спектра драйверов и простота включения

Нового драйвера в систему

Достоинством подсистемы ввода-вывода любой универсальной ОС является на­личие разнообразного набора драйверов для наиболее популярных периферийных устройств. Прекрасно спланированная и реализованная операционная сис­тема может потерпеть неудачу на рынке только из-за того, что в ее состав не включен достаточный набор драйверов и администраторы и пользователи выну­ждены искать нужный им драйвер для имеющегося у них внешнего устройства у производителей оборудования или, что еще хуже, заниматься его разработкой. Именно в такой ситуации оказались пользователи первых версий OS/2, и, воз­можно, это обстоятельство послужило в свое время не последней причиной сда­чи позиций этой неплохой операционной системы, богатой на драйверы ОС Win­dows 3.x.

Чтобы операционная система не испытывала недостатка в драйверах, необходи­мо наличие четкого, удобного и открытого интерфейса между драйверами и дру­гими компонентами ОС. Такой интерфейс нужен для того, чтобы драйверы пи­сали не только непосредственные разработчики данной операционной системы, но и большая армия программистов по всему миру, в первую очередь — тех пред­приятий, которые выпускают внешние устройства для компьютеров. Открытость интерфейса драйверов, то есть доступность его описания для независимых раз­работчиков программного обеспечения (а возможно, также и разработка его на основе согласительных процедур между ведущими коллективами разработчиков), является необходимым условием успешного развития операционной системы.

Драйвер взаимодействует, с одной стороны, с модулями ядра ОС (модулями подсистемы ввода-вывода, модулями системных вызовов, модулями подсистем управления процессами и памятью и т. Д.), а с другой стороны — с контроллера­ми внешних устройств. Поэтому существуют два типа интерфейсов:

-интерфейс «драйвер-ядро» (Driver Kernel Interface, DKI);

-интерфейс «драйвер-устройство» (Driver Device Interface, DDI).

Интерфейс «драйвер-ядро» должен быть стандар­тизован в любом случае, а интерфейс «драйвер-устройство» имеет смысл стан­дартизировать тогда, когда подсистема ввода-вывода не разрешает драйверу не­посредственно взаимодействовать с аппаратурой контроллера, а выполняет эти операции самостоятельно. Экранирование драйвера от аппаратуры является весьма полезной функцией, так как драйвер в этом случае становится независимым от. аппаратной платформы. Подсистема ввода-вывода может поддерживать несколь­ко различных типов интерфейсов DKI/DDI, предоставляя специфический ин­терфейс для устройств определенного класса. Так, в ОС Windows NT для драй­веров сетевых адаптеров существует интерфейс стандарта NDIS (Network Driver Interface Specification), в то время как драйверы сетевых транспортных протоко­лов взаимодействуют с верхними слоями сетевого программного обеспечения по интерфейсу TDI (Transport Driver Interface).

Обычно подсистема ввода-вывода поддерживает большое количество системных функций, которые драйвер может вызывать для выполнения некоторых типовых действий. Примерами могут служить упомянутые операции обмена с регистрами контроллера, ведение буферов для промежуточного хранения данных ввода-вы­вода, синхронизация работы нескольких драйверов, копирование данных из поль­зовательского пространства в пространство системы и т. Д.

Для поддержки процесса разработки драйверов операционной системы обычно выпускается так называемый пакет DDK (Driver Development Kit), представляющий собой набор соответствующих инструментальных средств — библиотек, компиляторов и отладчиков.



Поделиться:


Последнее изменение этой страницы: 2017-01-19; просмотров: 134; Нарушение авторского права страницы; Мы поможем в написании вашей работы!

infopedia.su Все материалы представленные на сайте исключительно с целью ознакомления читателями и не преследуют коммерческих целей или нарушение авторских прав. Обратная связь - 18.116.62.45 (0.004 с.)