Студопедия.Орг Главная | Случайная страница | Контакты | Мы поможем в написании вашей работы!  
 

Драйверы устройств



Как правило, для управления внешними устройствами ОС содержит компоненты, которые в различных ОС называются по-разному(метод доступа, драйверы устройств и тп). Структура драйвера и механизм управления внешними устройствами могут варьироваться в зависимости от ОС. Структура типового драйвера рассмотрим на примере драйвера для ОС MS-DOS.

Пример:


В данной ОС для доступа к устройству указывается имя файла или номер устройства, к которому происходит обращение. Для обращения к данным(файлу) в первую очередь выполняется так называемая процедура открытия OPEN, которая создает блок управления файлом FCB(file control block). FCB содержит информацию о механизме доступа к устройству. После этого можно использовать принятые в ОС механизмы по обслуживанию операций ввода-вывода. Запрошенное обслуживание, преобразвованное в определенную последовательность команда передается в контроллер. Каждое устройство имеет набор программок для выполнения каждого запроса. В целом, набор этих программ образует драйвер устройства. DOS преобразует запрос на обслуживание в последоватьелность команд драйвера и передает их нужному драйверу. Драйверы находятся в области реальной ОП, отведенной для DOS. Драйверы различных устройств хранятся в ОП и образуют цепочку. Для поиска нужного драйвера. Для поиска нужного драйвера имеется указатель на цепочку. В ОП драйверы загружаются на этапе NIP.

Структура драйвера:

Драйвер устройства для MS-DOS состоит из 5 частей:

- заголовок устройства – содержит информацию о самом драйвере, не содержит код. В нем находится информация о типе устройства и ссылка на адрес следующего драйвера.

- область локальных данных и локальных процедур – содержит необходимые для работы драйвера буферы и процедуры;

- процедура-стратегия – объединяется с процедурой-прерыванием при обработке каждого запроса на обслуживание устройства;

- процедура-прерывание – объединяется с процедурой-стратегией при обработке каждого запроса на обслуживание устройства;

- обработка команд – непосредственно набор команд для выполнения запроса.

взаимодействие MS-DOS с драйвером – при вызове DOS-драйвера ему в качестве параметра передается так называемый заголовок запроса(некоторая структура данных).

Формат запроса:


1 - длина в байтах данного заголовка запроса

2 - номер устройства(когда драйвер управляет несколькими устройствами)

3 - код команды ввода-вывода

4 - информация об окончании операции

5 - резерв

6 - данные(параметры) команды

DOS автоматически создает заголовок запроса, когда пользовательский процесс осуществляет озапрос на ввод-вывод. Заголовок запроса находится в реальной ОП в области DOS. Адрес заголовка сообщается драйверу, когда ему переддается управление, через один из регистров. Драйвер запоминате адрес заголовка запроса в области локальных данных и локальных процедур. Для обработки запроса ввода-вывода DOS вызывает драйвер дважды: в первый раз управление передается части драйвера – стратегия, во второй раз – прерывание. Процедура-стратегия – набор инструкций, которые производят настойку драйвера в зависимости от кода команды и параметров. Процедура-прерывание использует результаты процедуры-стратегии для обработки команды ввода-вывода. Двукратный выхов необходим для возможной организации мультидоступа нескольких процессов к устройству. В этом случае организуется связанный список(цепочка) всех запросов драйвера(всех вызовов процедуры "стратегия"), а все вызовы для выполнения фактической работы помещаются в другую цепочку – в цепочку "прерывания". При организации запроса учитывается приоритет: ОС – высокий, пользовательская программа – низкий. Цепочка "стратегия" и цепочка "прерывания" могут не совпадать. Процедура прерывания обрабатывает заголовок запроса и передает управление обработке команды. Выполнение операции ввода-вывода происходит следующим образом(на примере записи):


1. Процесс выдает запрос на обслуживание по записи.

2. DOS преобразует запрос записи в физический адрес накопителя.

3. DOS определяет нужный драйвер диска и вызывает драйвер.

4. Драйвер обращается к рограммам обслуживания диска BIOS для выполнения записи.

5. Стандартная программа BIOS производит запись на диск.

6. Возврат в DOS.

7. Возврат в процесс.

Организация ввода-вывода в Windows2000: одной из целей при создании Windows2000 была переносимость на различные аппаратные платформы. Решить эту задачу трудно, тк на различный платформах управление регистрами, DMA и прерываниями осуществляется по-разному(то есть, различия не только в системе команд процессора). Перекомпилировать ядро и компонетны, взаимодействующие с аппаратурой проблематично из-за различий во многих мелких деталях. Для того, чтобы скрыть эти различия, на нижнему уровне была разработана специальная подсистема – HAL. Идея – предоставлять всей остальной части ОС абстрактные виртуальные устройства, эти устройства представляются в виде машинно-независимых служб(процедурных вызовов и макросов), которые могут использоваться основной частью ОС и драйверами. Т.к. драйверы и ядро ОС пользуются службами HAL(идентичными для всех программно-аппаратных платформ, на которые планировалось установить Windows2000) и не обращаются к устройствам напрямую, требуется значительно меньше изменений для их переноса с платформы на платформу. Перенести сам HAL менее проблемматично, так как весь машинно-зависимый код сосредоточен в одном месте(новая платформа – новый HAL).

Как правило, уровень HAL включает следующие основные опции:

- адресацию устройств

- управление регистрами

- обработка/возврат из прерываний

- операци с DMA

- управление устройствами службы времени

- интерфейс с BIOS

-...

Упрощенно место HAL в структуре Windows2000 можно изобразить следующим образом:

Переносимость адресации устройств осуществляется за счет отображения физических адресов на логические адреса. Структура логического адреса сходна по формату с используемыми в Windows2000 дискрипторами системных ресурсов. Переносимость прерываний обеспечивается двумя службами HAL:

- уникальным наименованием прерываний в каждой конкретной платформе

- связыванием прерываний с драйверами устройств.

Переносимость механизма DMA обеспечивается службой, которая позволяет управлять как единой для всех механизмом DMA, так и специфическими для разных платформ.

Уровень HAL обеспечевает синхронизацию при SMP и настройку своих служб в зависимости от конфигурации BIOSа.

Во время установки Windows2000 в зависимости от платформы выбирается наиболее подходящих тип HAL. В данной ОС драйверы устройств могут выполнять специфические ф-ии, не связанные конкретно с внешним устройством, например, кодировки информации или быстрого доступа к некотормы структурам данных ядра. Выполнение запросов на ввод-вывод выполняется с помощью API. Запросы на ввод-вывод передаются драйверам в виде стандартных пакетов, которые назвыются IRP. При создании драйвера для Windows2000 он должен удовлетворять следующим требованиям: должен поддерживать работу с объектами в формате, принятом в Windows2000, должен поддреживать устройства Plug&Play, должен поддреживать режим энергосбережения для внешних устройств, должен быть настраиваемым, то есть не иметь встроенной поддержки определеннных аппаратных опций, должен поддерживать функционирование в многопроцессорной системе.





Дата публикования: 2015-06-12; Прочитано: 506 | Нарушение авторского права страницы | Мы поможем в написании вашей работы!



studopedia.org - Студопедия.Орг - 2014-2024 год. Студопедия не является автором материалов, которые размещены. Но предоставляет возможность бесплатного использования (0.006 с)...