КАТЕГОРИИ:
АстрономияБиологияГеографияДругие языкиДругоеИнформатикаИсторияКультураЛитератураЛогикаМатематикаМедицинаМеханикаОбразованиеОхрана трудаПедагогикаПолитикаПравоПсихологияРиторикаСоциологияСпортСтроительствоТехнологияФизикаФилософияФинансыХимияЧерчениеЭкологияЭкономикаЭлектроника
|
Другие методы поиска⇐ ПредыдущаяСтр 37 из 37 Помимо описанных методов поиска имени файла, в директории существуют и другие. В качестве примера можно привести организацию поиска в каталогах файловой системы NTFS при помощи так называемого B-дерева, которое стало стандартным способом организации индексов в системах баз данных (см. [Ахо, 2001]). 56.Подсистема ввода/вывода. Схема взаимодействия подсистем ОС. Понятие драйвера. Типы драйверов. Подсистема управления вводом-выводом позволяет процессам поддерживать связь с периферийными устройствами, такими как накопители на магнитных дисках и лентах, терминалы, принтеры и сети, с одной стороны, и с модулями ядра, которые управляют устройствами и именуются драйверами устройств, с другой. Между драйверами устройств и типами устройств обычно существует однозначное соответствие: в системе может быть один дисковый драйвер для управления всеми дисководами, один терминальный драйвер для управления всеми терминалами и один ленточный драйвер для управления всеми ленточными накопителями. Драйверы обеспечивают интерфейс между ядром ос Unix и аппаратными частями компьютера (скрыта архитектура). Часть драйвера-доступ к физическим устройствам, другие предоставляют аппар независимые услуги /dev/null. В процессе запуска ос ядро вызывает соответствующий процесс инициализации установленных драйверов. Типы драйверов (различаются возможностями и способами доступа, управления) 1. Символьные (работа с устройствами, побайтовый доступ и обмен данными для модемов, принтеров, терминалов, доступ не включает использование буферного КЭШа) 2. Блочные производит обмен данными с устройствами фиксированными порциями, те порциями (например жесткий диск). Используется буферный кэш, он является интерфейсом между файловой системой и устройствами. 3. Драйвера низкого уровня. Тип интерфейса позволяет производить обмен с блочными устройствами минуя буферный КЭШ. Устройство мб адресовано элементами размер которых не совпадает с размером блока. Обмен данными не зависит от файла подсистемы и буферного КЭШа. Управляющая схема взаимодействия драйвера устройств с другими подсистемами ОС Unix.
как видно из схемы не все драйверы предназначены для работы с физическими устройствами. Часть служит для предоставления различных услуг ядра прикладным процессам. Такие драйверы программные или драйверы псевдоустройств /dev/kmem. Доступ к виртуальной памяти ядра. Зная адреса внутренней структуры ядра процесс может считывать хранимую там информацию. С помощью драйвера может быть реализована версия утилиты БС которая выводит информацию о версии процесса (/dev/mem доступ к физической памяти, /dev/zero обеспечивает заполнение 0ми определенного буфера. Для инициализации определенной области памяти. Базовая архитектура драйвера Адресуемся старшим номером устройства среди атребут файловых устройств, наряду с другими. Младший номер интерпретируется наряду с драйверами. В то время как доступ к любому разделу производится через старший номер. Младший номер указывает к какому разделу доступ. Доступ к другим осуществляется ядром через структуру данных (коммуникатор устройств) Каждый элемент содержит указатель на соответствующие функции драйвера. Указатели называются точками входа. Старшее число в структуре указатель на коммуникатор (разделяется для блочных и символьных устройств) bde vsw блочные; cdcvew символьные. Ядро размещает отдельный массив для каждого типа коммуникаторов. Любой драйвер имеет доступ в соответствующем массиве. Если драйвер имеет как символьный так и блочный доступ, то точки входа фиксируются и в том и в другом массиве. Коммуникатор определяет интерфейс драйвера устройства. Каждый драйвер обеспечивает соотношение реализаций функций интерфейса. Если драйвер не поддерживает ф-й стандартного интерфейса тогда он заменен соответствующими точками, специальными заглушками, предоставляемыми ядром. Когда ядру надо запросить операц у драйвера устройств, ядро определяет элемент коммуникатора, затем вызывает требуемую функцию. Имя точки входа XX open () (конкретный драйвер, действие). Соответствует вызову при выполнении каждой операции, открытие устройства. Обеспечивает необходимость реинициализации для физического устранения и внутренних данных драйвера. Можно выделить 5 основных случаев в которых ядро обращается к функциям драйвера 1. Автоконфигурация (инициализация ОС Unix) 2. ВВ/выв запрос на операцию вв/выв прикладных процессов 3. Обработка прерываний 4. Специальные запросы 5. Реинициализация и остальное Некоторые типы аппаратных архитектур требуют сброса и реинициализации устройств. Вызов при сбросе. Встраивание драйвера в ядро Есть два метода встраивания кода и данных драйвера в ядро ос: 1. Перекопиляция ядра 2. Динамическая загрузка в процессе работы системы Динамическая установка драйвера требует выполнения следующих операций: размещение и динамическое связывание драйвера, инициализация драйвера и устройства, добавление т входа драйвера в соответствующий коммутатор устройств. Установка обраб прерывания Если перекомпиляции не отличаются от компиляции обычной программы, все составляющие ядра являются объектами модуля (для получения исполнительного файла).
|