- •Синхронизация скоростей обмена данными
- •Разделение устройств и данных между процессами
- •Поддержка синхронных и асинхронных операций ввода-вывода
- •Менеджер ввода-вывода
- •Способы доступа к устройствам ввода-вывода
- •Способы реализации ввода - вывода
- •Драйверы
- •Функции драйвера
- •Многоуровневые драйверы
- •Байт и Блок -ориентированность
- •Динамическая загрузка и выгрузка драйверов
- •Типы файлов
- •Создавать,
- •Иерархия файловой системы
- •Имена файлов
- •Монтирование
- •Атрибуты файлов
- •Вопросы по модулю №2
Многоуровневые драйверы
С усложнением IOS и организации ее многослойности появились так называемые высокоуровневые драйверы, которые располагаются в над традиционными драйверами.
Это обусловлено тем, что не нужно концентрировать все функции по управлению устройством в одном программном модуле, во многих случаях гораздо эффективней распределить их между несколькими модулями в соседних слоях иерархии.
Традиционные драйверы стали называть аппаратными, низкоуровневыми, или драйверами устройств.
Такой подход повышает гибкость и расширяемость функций управления устройством. Вместо жесткого набора функций, находящихся в единственном драйвере, можно выбрать требуемый набор, установив нужный высокоуровневый драйвер.
Если различным приложениям необходимо работать с различными логическими моделями одного и того же физического устройства, то для этого достаточно установить в системе несколько драйверов на одном уровне, работающих над одним аппаратным драйвером.
На практике обычно используют от двух до пяти уровней драйверов.
Слишком большое количество уровней драйверов снижает скорость операций I/O.
Несколько драйверов, управляющих одним устройством, но на разных уровнях, рассматривают как набор отдельных драйверов или как один многоуровневый драйвер.
Высокоуровневые драйверы придерживаются тех же внутренних интерфейсов, что и аппаратные драйверы.
Единственное отличие аппаратных от высокоуровневых - это то, что высокоуровневые драйверы, как правило, не вызываются по прерываниям.
Менеджер I/O управляет драйверами однотипно, независимо от их уровня.
Пример многоуровневого драйвера: вертикальная подсистема сетевых устройств OSI стека протоколов для доступа к Internet (Open System Interconnection – модель взаимодействия открытых систем – это мировой стандарт для разработки сетевых продуктов. Подробнее на уроках по сетям):
1. уровень – аппаратные драйверы (Ethernet, ArcNet, ATM …).
2. IP/IPX (слой драйверов сетевого уровня).
3. TCP, SPX, NetBEUI (слой драйверов транспортных протоколов).
4. http, ftp, smb и др. (слой драйверов протоколов прикладного уровня).
В подсистеме управления графическими устройствами, такими как графические мониторы и принтеры, также существует несколько уровней драйверов. От управления графическим адаптером до создания для каждого приложения виртуального образа экрана в виде набора окон, в которые приложение может выводить свои графические данные.
В подсистеме управления дисками аппаратные драйверы поддерживают представление диска как набора блоков. Но такие понятия, как «файл» и «файловая система», понимаются программным обеспечением файловых систем, которое в современных ОС также оформляется как драйвер, только высокоуровневый.
Так решают проблему поддержки в ОС нескольких файловых систем одновременно. Для этого в ОС устанавливается несколько высокоуровневых драйверов, работающих с общими аппаратными драйверами.
Аппаратные драйверы взаимодействуют с системой прерываний.
Драйверы более высоких уровней вызываются аппаратными драйверами или драйверами вышележащего уровня.