Добавил:
Upload Опубликованный материал нарушает ваши авторские права? Сообщите нам.
Вуз: Предмет: Файл:
ТОС_2013 / ТОС_11_п_вв_выв_слайды.doc
Скачиваний:
6
Добавлен:
03.03.2016
Размер:
6.2 Mб
Скачать

Подсистема ввода/вывода

Фактическая архитектура ввода/вывода скрыта от прикладного процесса несколькими интерфейсами.

Однако возможны ситуации, когда прикладному процессу требуется взаимодействие с периферийными устройствами на более низком уровне.

Хотя в этом случае роль файловой подсистемы не столь велика, как при работе с обычными файлам, все равно ядро предоставляет процессу унифицированную схему, скрывающую истинную архитектуру того или иного устройства.

В конечном итоге работа всех этих интерфейсов, как высокого уровни (файловая система), так и более низкого (взаимодействие с физическим устройством), обеспечивается подсистемой ввода/вывода ядра (ПВВ).

основным компонентом ПВВ являются драйверы — модули ядра, обеспечивающие непосредственную работу с периферийными устройствами.

UNIX использует два основных типа драйверов – символьные и блочные.

Как следует из названия, драйверы первого типа обеспечивают обмен сравнительно небольшими объемами данных с устройством, что имеет место при работе, например, с терминалами или принтерами. Драйверы второго типа производят передачу данных блоками, что имеет место для дисковых носителей данных. Эти типы драйверов входят в традиционную подсистему ввода/вывода и присутствуют во всех версиях UNIX.

Драйверы устройств

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

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

В UNIX существует большое количество драйверов. Часть из них обеспечивает доступ к физическим устройствам, например, жесткому диску, принтеру или терминалу, другие предоставляют аппаратно-независимые услуги. Примермо последних могут служить драйверы /dev/kmem для работы с виртуальной памятью ядра /dev/null, представляющий "нулевое" устройство.

В процессе запуска системы ядро вызывает соответствующие процедуры инициализации установленных драйверов.

Типы драйверов

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

три основные типа драйверов:

Символьные драйверы

работу с устройствами с устройствами с побайтовым доступом и обменом данными (модемы, терминалы, принтеры, манипуляторы мышь и т. Д).

Доступ к драйверам не включает использование буф. кэша. При необходимости буферизации обычно используется подход, основанный на структурах данных, называемых clist.

Блочные драйверы

Этот тип драйверов позволяет производить обмен данными с устройством фиксированными порциями (блоками). На­пример, для жесткого диска данные можно адресовать и, соответственно, читать только секторами, размер которых составляет несколько сотен байтов. обычно используется буф.кэш, который является интерфейсом между файловой системой и устройством.

Драйверы низкого уровня (raw drivers)

Этот тип интерфейса блочных драйверов позволяет производить обмен данными с блочными устройствами, минуя буферный кэш.

Обмен данными позволяет производить ядру передачу непосредственно между пользовательским процессом и устройством, без дополнительного копирования.

На рис. 5.1 приведена упрощенная схема взаимодействия драйверов устройств с другими подсистемами операционной системы UNIX.

Не все драйверы служат для работы с физическими устройствам

Часть драйверов служат для предоставления различных услуг ядра прикладным процессам и не имеют непосредственного отношения к аппаратной части компьютера. Такие драйверы называются программными или драйверами псевдоутройств.

примеры псевдоустройств и соответствующих программных драйверов:

Соседние файлы в папке ТОС_2013