Структура драйвера Виды драйверов и их устройство Виды драйверов в ОС Блочные Символьные Сетевые SCSI – драйверы псевдоустройства Блочные Жесткие диски Дискеты CD-DVD-дисководы Некоторые сетевые устройства Символьные Байтовый ввод и вывод Клавиатура Терминалы Последовательный и параллельный порты Аудио-устройства Контроллеры датчиков Сетевые Драйверы сетевых карт Драйверы протоколов Драйверы фильтрации пакетов SCSI - устройства Протоколы определения адреса приемника Протоколы передачи пакета Протоколы арбитража Используется и для других типов устройств (USB, Parport) Псевдоустройства Память процесса Память ядра Датчик случайных чисел Порты ввода-вывода Null - устройство сброса данных Zero –источник нулей Loop - замыкание файла на VFS Связь со специальными файлами Каталог /dev/ Винчестеры – raw диски Разделы – именование для IDE и SCSI контроллеров Гибкие диски и CD-DVD-приводы Псевдоустройства Создание специального файла Ведущее и ведомое числа Major Minor Назначение этих чисел Уникальность Соответствие драйверам устройств Архитектура драйвера Заголовок Локальные переменные Диспетчер Процедура обработки прерываний Init- модуль Setup-модуль Заголовок драйвера Содержит основные параметры драйвера Содержит имя Необходим для регистрации драйвера в системе Локальные переменные Статического и динамического типа Хранят значения временных параметров процесса ввода-вывода Необходимы для функционирования драйвера Диспетчер Или процедура «стратегия» Принимает системные запросы в стандарте виртуальной файловой системы и преобразует их в команды устройства Освобождает процессор после программирования устройства Процедура прерываний Или ISR – interrupt service routine Асинхронно получает управление при возникновении аппаратного прерывания по вектору устройства Анализирует причину прерывания Передает данные из/в пространство программы пользователя Имеет два уровня (критический и фоновый) во втором прерывания разрешены Init Работает при установке или перезапуске драйвера Проверяет присутствие и работоспособность устройства Регистрирует драйвер в системе Setup Присутствует в некоторых ОС Позволяет устанавливать параметры Работы драйвера В большинстве современных UNIXсистем его функции реализованы в диспетчере через IOCTL-запросы Структура file_operations в Linux