Скачиваний:
15
Добавлен:
09.05.2014
Размер:
22.53 Кб
Скачать

Ввод/ввывод

Типы драйверов — символьные и блочные

Устройства — символьно-орентированные и блочно-орентированные

Драйверы — обеспечивают интерфейс между ядром и аппаратной частью компьютера

  • Символьные — доступ побайтно, не буферизированы (принтеры терминалы). Буферизация с помощью clist (состоит из полей с_сс — число символов в буфере, все остальные поляуказывают на 1 и последний элементы cblock, который хранит несколько символов)

  • Блочные — обмен блоками, буферизированный кэш, (жесткий диск). Делятся на те что используют файловую систему и нет. Для последних доступ осуществляется с помощью спец. Файла устройства, доступ к первым только при размонтированной файловой системе. Доступ — xxopen, xxclose, xxstrategy(отвечает за ввод-вывод)

  • Низкого уровня — вид блочных, но без буфера

Программные драйверы или драйверы псевдоустройств - /dev/mem(доступ к физ. Памяти), /dev/null (нулевое устройство)

mknod /dev/tty13 c 2 13 (c-символьный, 2 — старший номер, 13 — младший номер)

старший — адресуется самим драйвером устойства (указатель на элемент коммутатора)

младший — интерпретируется самим драйвером (для клонов или разделы жесткого диска)

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

Коммутатор — bdevsw (для блочных) и cdevsw (для символьных)

Точки входа — определяют префикс функций (mmopen, mmclose)

Обращение ядра к функциям драйвера

  • автоконфигурация (определение какие устройства доступны)

  • ввод-вывод

  • обработка прерываний

  • специальные запросы

  • реинциализация или останов

Драйвер состоит из верхней и нижней половины

  • верхняя — вызывается по определенным запросам прикладного процесса и выполняются в его контексте (синхронный характер, ввод-вывод, управление)

  • нижняя — выполнение функций происходит в контексте ядра и обычно не имеет никакого отношения к контексту текущего процесса (асинхронный характкр, обработка прерываний)

Клоны

Использование различных младших номеров (который соответствует логическому драйверу) позволяет нескольким процессам одновременно и независимо работать с устройством.

Выбор младшего номера

  • перебор различных младших номеров, пока функция open не завершится успешно

  • пооиск возлагается на драйвера клонов (имеют один и тот же старший номер, а младший номер адресует собственно драйвер, представляя собой старший номер реального устройства для которого создается клон

Встраивание драйверов в ядро

  • статически (перекомпиляция ядра и перезапуск системы)

  • динамически ( размещение и связывание символов драйвера, инциализация драйвера и устройства, добавление точек входа в коммунатор устройства, установка обработчика прерываний)

Подсистема STREAMS

Представляет интерфейс обмена данными, основанный на сообщениях и обеспечивает стандартные механизмы буферизации, управление потоком данных и различную приоритетность обработки. Подсистема STREAMS обеспечивает создание потоков — полнодуплексных каналов между прикладным процессом и драйвером устройства. Поток состоит из головного модуля (взаимодействет с процессами через интерфейс системных вызовов, задачи — трансляция данных, сообщения об ошибках и отправка сигналов процессам, распаковка сообщений), модули обрабатывают информацию, драйвер замыкающий поток взаимодействует с физ. устройством. Передача по потоку в виде сообщений (содержат данные, тип сообщения и управляющую информацию, описывается заголовком сообщения и заголовком блока данных), для передачи имеютя 2 очереди — очередь записи и очередь чтения .

Типы сообщений

  • обычные

  • приоритетные (всегда помещаются перед обычными сообщениями)

Управление передачей данных обеспечивается с помощью функций xxput и xxservice(необязательная)

Управление потоком с помощью системного вызова ioctl

Подсистема так же обеспечивает возможность мультиплексирования потоков.

Типы мультиплексоров

  • верхний ( обеспечивает мультиплексирование вверх по потоку)

  • нижний ( обеспечивает мультиплексирование вниз по потоку)

  • гибридный ( обеспечивает мультиплексирование вверх и вниз по потоку)

Соседние файлы в папке материалы к собеседованию