Студопедия

КАТЕГОРИИ:


Архитектура-(3434)Астрономия-(809)Биология-(7483)Биотехнологии-(1457)Военное дело-(14632)Высокие технологии-(1363)География-(913)Геология-(1438)Государство-(451)Демография-(1065)Дом-(47672)Журналистика и СМИ-(912)Изобретательство-(14524)Иностранные языки-(4268)Информатика-(17799)Искусство-(1338)История-(13644)Компьютеры-(11121)Косметика-(55)Кулинария-(373)Культура-(8427)Лингвистика-(374)Литература-(1642)Маркетинг-(23702)Математика-(16968)Машиностроение-(1700)Медицина-(12668)Менеджмент-(24684)Механика-(15423)Науковедение-(506)Образование-(11852)Охрана труда-(3308)Педагогика-(5571)Полиграфия-(1312)Политика-(7869)Право-(5454)Приборостроение-(1369)Программирование-(2801)Производство-(97182)Промышленность-(8706)Психология-(18388)Религия-(3217)Связь-(10668)Сельское хозяйство-(299)Социология-(6455)Спорт-(42831)Строительство-(4793)Торговля-(5050)Транспорт-(2929)Туризм-(1568)Физика-(3942)Философия-(17015)Финансы-(26596)Химия-(22929)Экология-(12095)Экономика-(9961)Электроника-(8441)Электротехника-(4623)Энергетика-(12629)Юриспруденция-(1492)Ядерная техника-(1748)

Драйверы устройств

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

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

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

Так как в ОС будут устанавливаться драйверы, написанные другими программистами, необходима определенная архитектура, допускающая подобную установку. Это означает, что должна быть выработана строго определенная модель функций драйвера и его взаимодействия с остальной операционной системой. Драйверы устройств обычно располагаются под остальной ОС, как показано на рис. 3.4.

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

Рис. 3.4. Логическое расположение драйверов устройств

 

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

Некоторые ОС представляют собой двоичную программу, содержащую в себе все необходимые драйверы. Такая схема в течение многих лет была нормой для ОС UNIX, так как они предназначались для работы в компьютерных центрах, где устройства ввода-вывода менялись редко. При добавлении нового устройства системный администратор просто перекомпилировал ядро с новым драйвером, получая новый двоичный модуль.

С появлением персональных компьютеров с их огромным разнообразием устройств ввода-вывода такая модель перестала работать. Далеко не все пользователи могли самостоятельно перекомпилировать и собрать ядро даже при наличии исходных текстов или объектных модулей. Поэтому операционные системы, начиная с MS-DOS, перешли к модели динамической подгрузки драйверов. Различные системы выполняют эту процедуру по-разному.

<== предыдущая лекция | следующая лекция ==>
Ввод-вывод | Функционирование драйверов устройств
Поделиться с друзьями:


Дата добавления: 2014-01-04; Просмотров: 523; Нарушение авторских прав?; Мы поможем в написании вашей работы!


Нам важно ваше мнение! Был ли полезен опубликованный материал? Да | Нет



studopedia.su - Студопедия (2013 - 2024) год. Все материалы представленные на сайте исключительно с целью ознакомления читателями и не преследуют коммерческих целей или нарушение авторских прав! Последнее добавление




Генерация страницы за: 0.009 сек.