Книга: Операционная система UNIX
Драйвер
Драйвер
Драйверы и модули очень похожи, они используют одинаковые структуры данных (streamtab
, qinit
, module_info
) и одинаковый интерфейс (xxopen()
, xxput()
, xxservice()
и xxclose()
). Однако между драйверами и модулями существуют различия.
Во-первых, только драйверы могут непосредственно взаимодействовать с аппаратурой и отвечать за обработку аппаратных прерываний. Поэтому драйвер должен зарегистрировать в ядре соответствующий обработчик прерываний. Аппаратура обычно генерирует прерывания при получении данных. В ответ на это драйвер копирует данные от устройства, формирует сообщение и передает его вверх по потоку.
Во-вторых, к драйверу может быть подключено несколько потоков. Как уже обсуждалось, на мультиплексировании потоков построены многие подсистемы ядра, например, поддержка сетевых протоколов. В качестве мультиплексора может выступать только драйвер. Несмотря на то что драйвер в этом случае не является оконечным модулем (см., например, рис. 5.15), размещение драйверов существенным образом отличается от встраивания модулей.
Наконец, процесс инициализации драйверов и модулей различен. Функция xxopen()
драйвера вызывается при открытии потока, в то время как инициализация модуля происходит при встраивании.
- Системные вызовы и драйверы устройств
- 1.4 Структуры данных, связанные с драйверами устройств Windows
- 1.5 Структура драйвера устройства Windows
- 1.6 Драйверы и буферы ввода-вывода
- 1.7 Иерархия драйверов систем хранения и типы драйверов
- 2.3 Модель мини-драйвера IDE
- 2.6 Драйвер Storport
- Зачем нужны драйверы?
- При установке драйвера появляется сообщение об отсутствии у драйвера цифровой подписи
- Удалил драйвер видеокарты, а потом еще и отключил устройство по умолчанию SVGA. После перезагрузки увидел черный экран… ...
- Как получить исчерпывающую информацию о драйверах, установленных в системе?
- На старом компьютере нужно переустановить систему, но при этом сохранить драйверы. Есть возможность «вырвать» их из сист...