Подсистема управления
вводом-выводом позволяет процессам
поддерживать связь с периферийными
устройствами, такими как
накопители на магнитных дисках и
лентах, терминалы, принтеры и сети,
с одной стороны, и с модулями ядра,
которые управляют устройствами и
именуются драйверами устройств, с
другой. Между драйверами устройств
и типами устройств обычно
существует однозначное
соответствие: в системе может быть
один дисковый драйвер для
управления всеми дисководами, один
терминальный драйвер для
управления всеми терминалами и
один ленточный драйвер для
управления всеми ленточными
накопителями. Если в системе
имеются однотипные устройства,
полученные от разных изготовителей
- например, две марки ленточных
накопителей, - в этом случае можно
трактовать однотипные устройства
как устройства двух различных
типов и иметь для них два отдельных
драйвера, поскольку таким
устройствам для выполнения одних и
тех же операций могут
потребоваться разные
последовательности команд. Один
драйвер управляет множеством
физических устройств данного типа.
Например, один терминальный
драйвер может управлять всеми
терминалами, подключенными к
системе. Драйвер различает
устройства, которыми управляет:
выходные данные, предназначенные
для одного терминала, не должны
быть посланы на другой. Система поддерживает
"программные устройства", с
каждым из которых не связано ни
одно конкретное физическое
устройство. Например, как
устройство трактуется физическая
память, чтобы позволить процессу
обращаться к ней извне, пусть даже
память не является периферийным
устройством. Команда ps обращается к
информационным структурам ядра в
физической памяти, чтобы сообщить
статистику процессов. Еще один
пример: драйверы могут вести
трассировку записей в удобном для
отладки виде, а драйвер трассировки
дает возможность пользователям
читать эти записи. Наконец, профиль
ядра, рассмотренный в главе
8, выполнен как драйвер: процесс
записывает адреса программ ядра,
обнаруженных в таблице
идентификаторов ядра, и читает
результаты профилирования. В этой главе рассматривается
взаимодействие между процессами и
подсистемой управления
вводом-выводом, а также между
машиной и драйверами устройств.
Исследуется общая структура и
функционирование драйверов и в
качестве примеров общего
взаимодействия рассматриваются
дисковые и терминальные драйверы.
Завершает главу описание нового
метода реализации драйверов
потоковых устройств. Предыдущая
глава || Оглавление
|| Следующая глава
ГЛАВА 10. ПОДСИСТЕМА
УПРАВЛЕНИЯ ВВОДОМ-ВЫВОДОМ