Читайте также: |
|
В ОС linux реализован особый подход к управлению устройствами ввода-вывода. Данный подход заключается в интегрировании всех устройств ввода-вывода, т.н. файловую систему в виде специальных файлов. Каждому устройству ввода-вывода назначается маршрут. Обычно в каталоге /dev. Доступ к этим специальным файлам осуществляется так же, как и к любым другим файлам. Для этого не требуется никаких специальных команд или системных вызовов. Программы могут открывать, читать и записывать в специальные файлы. Существует 2 типа специальных файлов – блочные и символьные. Блочный специальный файл состоит из последовательности пронумерованных блоков. Основное свойство блочного специального файла заключается в том, что к каждому его блоку можно адресоваться и получить доступ. Программа может открыть блочный файл и получить доступ к произвольному пронумерованному блоку. Символьные специальные файлы используются для устройств ввода-вывода символьного потока. С каждым специальным файлом связан драйвер устройства, осуществляющий работу с соответствующим устройством. У каждого драйвера есть так называемый номер старшего устройства. Если драйвер поддерживает несколько устройств одного типа, то каждому такому устройству присваивается номер младшего устройства. Вместе взятые номера главного устройства и младшего устройства однозначно определяют каждое устройство ввода вывода.
Функция драйвера заключается в изолировании остальной части системы от особенностей аппаратного обеспечения. При помощи стандартных интерфейсов между драйверами и остальной операционной системой основная часть системы ввода-вывода может быть помещена в машинно-зависимую часть ядра. Когда пользователь обращается к специальному файлу, файловая система определяет номер старшего и младшего устройств, а так же выясняет, является ли файл блочным специальным файлом или символьным специальным файлом. Номер старшего устройства используется в качестве индекса для одной из двух внутренних хэш-таблиц, содержащих структуры данных для блочных или символьных специальных файлов. Найденная таким образом структура содержит указатели на процедуры открытия устройства, чтения из устройства, записи и т.д. Номер младшего устройства передается в виде параметра. Каждый драйвер разделен на 2 части. Верхняя часть драйвера работает в контексте вызывающей стороны и служит интерфейсом к остальной системе linux. Нижняя часть работает в контексте ядра и взаимодействует с устройствами. Система ввода-вывода занимается обработкой блочных специальных файлов и символьных специальных файлов.
Дата добавления: 2014-12-19; просмотров: 50 | Поможем написать вашу работу | Нарушение авторских прав |