Типы драйверов
по возможностям, которые они предоставляют, по способу обеспечения к ним доступа и управления.
три основные типа драйверов:
Символьные драйверы | работу с устройствами с устройствами с побайтовым доступом и обменом данными (модемы, терминалы, принтеры, манипуляторы мышь и т. Д). Доступ к драйверам не включает использование буф. кэша. При необходимости буферизации обычно используется подход, основанный на структурах данных, называемых clist. |
Блочные драйверы | Этот тип драйверов позволяет производить обмен данными с устройством фиксированными порциями (блоками). Например, для жесткого диска данные можно адресовать и, соответственно, читать только секторами, размер которых составляет несколько сотен байтов. обычно используется буф.кэш, который является интерфейсом между файловой системой и устройством. |
Драйверы низкого уровня (raw drivers) | Этот тип интерфейса блочных драйверов позволяет производить обмен данными с блочными устройствами, минуя буферный кэш. Обмен данными позволяет производить ядру передачу непосредственно между пользовательским процессом и устройством, без дополнительного копирования. |
На рис. 5.1 приведена упрощенная схема взаимодействия драйверов устройств с другими подсистемами операционной системы UNIX.
Не все драйверы служат для работы с физическими устройствам
Часть драйверов служат для предоставления различных услуг ядра прикладным процессам и не имеют непосредственного отношения к аппаратной части компьютера. Такие драйверы называются программными или драйверами псевдоутройств.
примеры псевдоустройств и соответствующих программных драйверов:
- Подсистема ввода/вывода
- Драйверы устройств
- Типы драйверов
- Базовая архитектура драйверов
- Файловый интерфейс
- Vnode а также inode физической файловой системы, где расположен специальный файл устройства, и соответствующий ему vnode.
- Встраивание драйверов в ядро
- Блочные устройства
- Символьные устройства
- Интерфейс доступа низкого уровня
- Буферизация
- Архитектура терминального доступа
- Псевдотерминалы