DVD+R-PN-8.5x8BULK.jpg
comp.jpg


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

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

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

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

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

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

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

 
Поиск

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

Реклама