- •Глава 6. Ввод – вывод и файловая система
- •6.1. Функции операционной системы по управлению файлами и устройствами
- •6.1.1. Организация параллельной работы устройств ввода-вывода и процессора
- •6.1.2. Согласование скоростей обмена и кэширование данных
- •6.1.3. Разделение устройств и данных между процессами
- •6.1.4. Обеспечение удобного логического интерфейса между устройствами и остальной частью системы
- •6.1.5. Поддержка широкого спектра драйверов и простота включения нового драйвера в систему
- •6.1.6. Динамическая загрузка и выгрузка драйверов
- •6.1.7. Поддержка нескольких файловых систем
- •6.1.8. Поддержка синхронных и асинхронных операций ввода-вывода
- •6.2. Многослойная модель подсистемы ввода – вывода
- •6.3. Логическая организация файловой системы
- •6.3.1. Цели и задачи файловой системы
- •6.3.2. Типы файлов
- •6.3.3. Иерархическая структура файловой системы
- •6.3.4. Имена файлов
- •6.3.5. Атрибуты файлов
- •6.3.6. Логическая организация файла
- •6.4. Физическая организация файловой системы
- •6.4.1. Диски, разделы, секторы, кластеры
- •6.4.2. Физическая организация и адресация файла
- •6.4.3. Физическая организация fat
- •Структура каталога
- •6.4.4. Физическая организация s5 и ufs
- •6.4.5.Физическая организация ntfs
- •6.5. Файловые операции
- •6.6. Контроль доступа к файлам
- •Вопросы для самоконтроля
6.1.4. Обеспечение удобного логического интерфейса между устройствами и остальной частью системы
Большое число различных устройств ввода-вывода делают особенно актуальной функцию ОС по созданию экранирующего логического интерфейса между периферийными устройствами и приложениями. Практически все современные операционные системы поддерживают в качестве основы такого интерфейса файловую модель периферийных устройств. В этом случае любое периферийное устройство представляется программисту в виде последовательности байт, с которыми можно работать с помощью унифицированных системных вызовов (например, read и write), задавая имя файла-устройства и смещение от начала последовательности байт.
Достоинство этой модели файла-устройства состоит в ее простоте и унифицированности для устройств любого типа, однако во многих случаях для программирования операций ввода-вывода некоторого устройства её недостаточно. Поэтому данная модель часто используется только в качестве основы, на которой подсистема ввода-вывода строит более содержательную модель устройств конкретного типа.
6.1.5. Поддержка широкого спектра драйверов и простота включения нового драйвера в систему
Основным достоинством подсистемы ввода-вывода любой универсальной ОС является наличие разнообразного набора драйверов для наиболее популярных периферийных устройств. Прекрасно спланированная и реализованная операционная система может потерпеть неудачу на рынке только из-за того, что в ее состав не включен достаточный набор драйверов и пользователи вынуждены искать нужный им драйвер для имеющегося у них внешнего устройства у производителей оборудования или, что еще хуже, заниматься его разработкой.
Чтобы операционная система не испытывала недостатка в драйверах, необходимо наличие четкого, удобного и открытого интерфейса между драйверами и другими компонентами ОС. Такой интерфейс нужен для того, чтобы драйверы писали не только непосредственные разработчики данной операционной системы, но и программистов тех фирм, которые выпускают внешние устройства для компьютеров. Открытость интерфейса драйверов, то есть доступность его описания для независимых разработчиков программного обеспечения является необходимым условием успешного развития операционной системы.
Драйвер взаимодействует, с одной стороны, с модулями ядра ОС (модулями подсистемы ввода-вывода, модулями системных вызовов, модулями подсистем управления процессами и памятью и т. д.), а с другой стороны — с контроллерами внешних устройств. Поэтому существуют два типа интерфейсов: интерфейс «драйвер-ядро» (Driver Kernel Interface, DKI) и интерфейс «драйвер-устройство» (Driver Device Interface, DDT). Интерфейс «драйвер-ядро» должен быть стандартизован в любом случае, а интерфейс «драйвер-устройство» имеет смысл стандартизировать тогда, когда подсистема ввода-вывода не разрешает драйверу непосредственно взаимодействовать с аппаратурой контроллера, а выполняет эти операции самостоятельно. Экранирование драйвера от аппаратуры является весьма полезной функцией, так как драйвер в этом случае становится независимым от аппаратной платформы. Подсистема ввода-вывода может поддерживать несколько различных типов интерфейсов DKI/DDI, предоставляя специфический интерфейс для устройств определенного класса.
Для поддержки процесса разработки драйверов операционной системы обычно выпускается так называемый пакет DDK (Driver Development Kit), представляющий собой набор соответствующих инструментальных средств — библиотек, компиляторов и отладчиков.
