Управление вводом и выводом
Управление вводом/ выводом
Подсистема управления вводом/ выводом позволяет процессам поддерживать связь с периферийными устройствами.
Периферийные устройства - это терминалы, принтеры, сети.
Драйверы - модули ядра, которые управляют устройствами.
Каждому устройству соответствует один драйвер. Возможна ситуация, когда для однотипных устройств используются разные драйверы.
Стадии конфигурации драйвера:
1. при подключении модуля
2. для plug-and-play устройств
Bios устанавливает для каждого драйвера свое прерывание:
Рекомендуемые материалы
- при подгруке модуля
- в модуле ядра
Результатом конфигурации является заполнение таблицы ключей. В таблице можно выделить два поля:
При обращении к жесткому диску ядро смотрит тип устройства (оно содержится в имени файла).
Существует два вида устройств:
1. символьные - - информация считывается и записывается посимвольно (принтер, сетевые карты, мыши)
2. блочные - информация считывается и записывается по блокам, блоки имеют свой адрес (диски)
К символьным устройствам относят те, к которым возможен последовательный доступ (мышь, модем), к блочным – произвольный доступ (винчестеры, диски).
Соответственно бывают блочные и символьные файлы.
Обращение происходит через буферный Кеш.
/dev/ - специальный каталог, для обращения к устройствам
Для работы с блочными используются команды open, close, read, write.
А для работы с символьными ioctl (для вызова). Создаются файлы командой mknod:
mknod имя_файла тип ст. устр-ва мл. устр-ва
(Пример): для создания файла, который будет отвечать за COM1:
Обратите внимание на лекцию "6 - Промышленные типы МПИ".
mknod <имя файла><тип> major minor, где
major – номер типа устройства
minor – номер устройства заданного типа
Например, mknod /dev/tty/ S0 C 4 64
Старший номер устройства - это тип устройства, который указывается в таблице ключей, а младший номер - это номер устройства данного типа.
Возникновение прерывания побуждает ядро запускать программу обработки прерывания для данного типа устройств (тип устройства определяется по вектору), передавая ей номер устройства.