Многоуровневые драйверы.
Традиционные особенности и функции, выполняемые драйвером состоят в следующем:
· входит в состав ядра ОС, работая в привилегированном режиме;
· непосредственно управляет внешним устройством, взаимодействуя с его контроллером с помощью команд ввода – вывода компьютера;
· обрабатывает прерывания от контроллера;
· предоставляет программисту удобный логический интерфейс, экранируя от ненужных деталей и подробностей;
· взаимодействует с другими модулями
Традиционные драйверы н делились на слои. С развитием ОС наряду с традиционными появились высокоуровневые драйверы, которые располагаются над традиционными драйверами. При этом традиционные драйверы стали называть аппаратными. С помощью высокоуровневого драйвера повышается гибкость и расширяемость функций по управлению устройством – вместо жесткого набора функций, которые сосредоточены в низкоуровневом драйвере, администратор ОС может выбрать требуемый набор функций, установив нужный высокоуровневый драйвер.
Если различным приложениям необходимо работать с различными логическими модулями одного и того же физического устройства, то для этого достаточно установить в системе несколько драйверов на одном уровне, работающих над одним аппаратным драйвером.
Количество уровней драйверов обычно не ограничивается. На практике используется от 2 до 5 уровней.
Высокоуровневые драйверы оформляются по тем же правилам и придерживаются тех де внутренних интерфейсов, что и аппаратные драйверы за исключением того, что они не вызываются по прерываниям, так как взаимодействуют
Как общие принципы построения многоуровневых драйверов могут быть реализованы применительно к конкретным устройствам можно рассмотреть на примере управления дисками.
Аппаратные драйверы поддерживают для верхних уровней представление диска как последовательного набора блоков одинакового размера, преобразуя вместе с контроллером номер блока в более сложный адрес из номера цилиндра, головки и сектора. Понятие «файла» и файловой системы аппаратные драйверы не поддерживают
Эти абстракции создаются на более высоком уровне . Они могут поддерживать несколько файловых систем одновременно. Для этого в ОС устанавливается несколько высокоуровневых драйверов (UFS, NTFS, FAT). Они работают с общими аппаратными драйверами, но по-своему организуют файловую систему пользователям и прикладными процессам.
Для унификации представления различных файловых систем может использоваться общий драйвер верхнего уровня VFS(Virtual File System). Такой драйвер используется, например в системах UNIX.
В унификацию драйверов большой вклад внесла ОС UNIX. В ней все драйверы разделены на 2 больших класса; блок – ориентированные и байт – ориентированные.
Например, драйвера графических и сетевых устройств относятся к байт – ориентированным, а драйверы, управляющие устройствами прямого доступа, которые хранят информацию в блоках фиксированного размера, - к блок – ориентированным (диск).
Адресуемость блоков приводят к тому, что для устройств прямого доступа имеется возможность кэширования данных в оперативной памяти. Это влияет на общую организацию ввода – вывода таких устройств.
Специальные файлы
Специальные файлы, называемые иногда наборами данных, которые хранятся на дисках. Они используются для унифицированного представления устройств ввода – вывода.
Со специальным файлом можно работать так же, как и с обычным – открывать, читать или записывать байты, а после завершения операции закрывать.
Для этого используется те же системные вызовы, что и для работы с обычными файлами; open, create, read, write, close.
Традиционно специальные файлы помещаются в каталог /dev, хотя ничто не мешает создать их любом каталоге файловой системы. При появлении нового устройства и, соответственно, нового драйвера администратор системы может создать новую зарись (например, с помощью команды mknod).
Дата добавления: 2016-06-15; просмотров: 3157;