- •Каналы
- •Правила для каналов (4)
- •Каналы
- •Неименованные каналы
- •Системные вызовы
- •Последовательность
- •Каналы предназначены только для передачи информации в одном направлении.
- •Правила для каналов (1)
- •Правила для каналов (2)
- •Правила для каналов (3)
- •Правила для каналов (5)
- •Режим без блокировки
- •Именованные каналы (1)
- •Именованные каналы (2)
- •Именованные каналы (3)
- •Именованные каналы (4)
- •Именованные каналы (5)
- •Конвейер команд
- •Создание канала в конвейере команд
- •Блокировки
- •Блокировки файлов
- •Блокировки файлов
- •Поля структуры flock
- •Системный вызов fcntl
- •Подсистема
- •Драйверы устройств
- •Символьные драйверы
- •Блочные драйверы
- •Драйверы низкого уровня
- •Драйверы устройств UNIX
- •Программные драйверы
- •Архитектура драйверов
- •Доступ к драйверу
- •Элемент массива коммутатора устройств (1)
- •Элемент массива коммутатора устройств (2)
- •Вызов функции драйвера
- •Драйвер как набор функций
- •Некоторые функции (1)
- •Некоторые функции (2)
- •Некоторые функции (3)
- •Некоторые функции (4)
- •Некоторые функции (5)
- •Некоторые функции (6)
- •Некоторые функции (7)
- •Некоторые функции (8)
- •Некоторые функции (9)
- •Обращение к драйверу
- •Три контекста вызова
- •Доступ к драйверу символьного устройства
- •Доступ к драйверу блочного устройства
- •Синхронная и асинхронная
- •Файловый интерфейс
- •Работа с простым
- •Работа с драйвером
- •Клоны
- •Работа с клонами
- •Связь драйвера с ядром
- •Динамическая установка
- •Динамическая установка
- •Доступ к блочным
- •Различные типы доступа
- •Буферизация при работе с символьным драйвером
- •Архитектура терминального доступа
- •Два режима работы
- •Дисциплина линии
- •Работа драйвера терминала
- •Псевдотерминалы
- •Взаимодействие процессов
- •Удаленный доступ
Синхронная и асинхронная
части драйвера
Синхронная (верхняя часть) – по запросу процесса в контексте процесса (доступна u-area).
Асинхронная часть (нижняя часть) – по запросу ядра (прерывания) в другом контексте.
Файловый интерфейс
Используется специальный тип файловой системы devfs (specfs). Часть функций реализуется vnode файловой системы, содержащей файл устройства, а часть – vnode специальной файловой системы.
Работа с простым
драйвером
Работа с драйвером
реального устройства
Клоны
Специальные устройства, работа с которыми требует создания структур данных для каждого процесса: псевдотерминалы (pty), сетевые протоколы (ip, icmp, arp, le, tcp, udp). Младший номер генерируется автоматически.
Работа с клонами
Связь драйвера с ядром
•Статические драйверы
•Динамические драйверы
Динамическая установка
драйвера (1)
•Размещение и динамическое связывание символов драйвера
•Инициализация драйвера и устройства
•Добавление точек входа драйвера в коммутатор устройств
Динамическая установка
драйвера (2)
•Установка обработчика прерываний драйвера
Доступ к блочным
драйверам
Два интерфейса:
•С использованием буферного кэша
•Напрямую к устройству без буферизации
