Заглавная страница Избранные статьи Случайная статья Познавательные статьи Новые добавления Обратная связь КАТЕГОРИИ: АрхеологияБиология Генетика География Информатика История Логика Маркетинг Математика Менеджмент Механика Педагогика Религия Социология Технологии Физика Философия Финансы Химия Экология ТОП 10 на сайте Приготовление дезинфицирующих растворов различной концентрацииТехника нижней прямой подачи мяча. Франко-прусская война (причины и последствия) Организация работы процедурного кабинета Смысловое и механическое запоминание, их место и роль в усвоении знаний Коммуникативные барьеры и пути их преодоления Обработка изделий медицинского назначения многократного применения Образцы текста публицистического стиля Четыре типа изменения баланса Задачи с ответами для Всероссийской олимпиады по праву Мы поможем в написании ваших работ! ЗНАЕТЕ ЛИ ВЫ?
Влияние общества на человека
Приготовление дезинфицирующих растворов различной концентрации Практические работы по географии для 6 класса Организация работы процедурного кабинета Изменения в неживой природе осенью Уборка процедурного кабинета Сольфеджио. Все правила по сольфеджио Балочные системы. Определение реакций опор и моментов защемления |
Категорії драйверів пристроїв
Windows ХР дає змогу використати кілька категорій драйверів режиму ядра. Найбільше поширення останнім часом набули WDM-драйвери [35]. На них зупинимося докладніше. Такі драйвери мають відповідати вимогам стандарту, який називають Windows Driver Model (WDM). Його розроблено для драйверів, використовуваних у лінії Windows ХР та останніх версіях Consumer Windows (Windows 98/Ме). Звичайно для переносу таких драйверів між системами достатньо їх перекомпі-лювати, а деякі з них сумісні на рівні двійкового коду. Розрізняють три типи WDM-драйверів. · Драйвери шини (bus drivers) керують логічною або фізичною шиною (наприклад, PCI, USB, ISA). Такий драйвер відповідає за виявлення пристроїв, з'єднаних із певною шиною. · Функціональні драйвери (function drivers) керують пристроєм конкретного типу. Драйвери шини надають пристрої функціональним драйверам. Звичайно тільки функціональний драйвер працює з апаратним забезпеченням пристрою, саме він дає змогу системі використати пристрій. · Драйвери-фільтри (filter drivers) доповнюють або змінюють поведінку інших драйверів. Насправді жоден драйвер, відповідно до стандарту WDM, не може цілковито відповідати за керування пристроєм, усі вони доповнюють один одного. Крім WDM-драйверів, у Windows ХР підтримують такі категорії драйверів ядра: файлових систем, відповідальні за перетворення запитів введення-виведення, що використовують файли, у запити до низькорівневих драйверів пристроїв (наприклад, драйвера жорсткого диска); відображення (display drivers) підсистеми Win32, які перетворюють незалежні від пристрою запити GDI-підсистеми в команди графічного адаптера або у прямі операції записування у відеопам'ять; успадковані, розроблені для Windows NT. На доповнення до драйверів ядра Windows ХР підтримує драйвери режиму користувача. До них, зокрема, належать драйвери принтерів, які перетворюють незалежні від пристрою запити GDI-підсистеми в команди відповідного принтера і передають ці команди WDM-драйверу (наприклад, драйверу паралельного порту або універсальному драйверу USB-принтера). Підтримка конкретного пристрою може бути розділена між кількома драйверами. Залежно від рівня цієї підтримки виділяються додаткові категорії драйверів. · Клас-драйвери (class drivers). Реалізують інтерфейс обробки запитів введення-виведення, специфічних для конкретного класу пристроїв, наприклад драйвери дисків або пристроїв CD-ROM.
· Порт-драйвери (port drivers). Реалізують інтерфейс обробки запитів введення-виведення, специфічних для певного класу портів введення-виведення; зокрема до цієї категорії належить драйвер підтримки SCSI. · Мініпорт-драйвери (miniport drivers). Керують реальними пристроями (наприклад, SCSI-адаптерами конкретного типу) і реалізують інтерфейс, наданий клас-драйверами і порт-драйверами. Структура драйвера пристрою Розглянемо структуру драйвера пристрою. Вона багато в чому подібна до структури, прийнятої в Linux. Можна виділити основні процедури драйвера. · Процедура ініціалізації. Звичайно називається DriverEntry, її виконує менеджер введення-виведення під час завантаження драйвера у систему, і зазвичай вона здійснює глобальну ініціалізацію структур даних драйвера. · Процедура додавання пристрою (add-device routine). Вона має бути реалізована будь-яким драйвером, що підтримує специфікацію Plug and Play. Менеджер Plug and Play викликає цю процедуру, якщо знаходить пристрій, за який відповідає драйвер. У ній звичайно створюють структуру даних, відображувану пристроєм (об'єкт пристрою). · Набір процедур диспетчеризації (dispatch routines), аналогічних функціям файлових операцій у Linux. Ці процедури реалізують дії, допустимі для пристрою (відкриття, закриття, читання, записування тощо). Саме їх викликає менеджер введення-виведення під час виконання запиту. · Процедура обробки переривання (interrupt service routine, ISR) аналогічна коду верхньої половини оброблювача переривання для Linux. Вона є оброблювачем переривання від пристрою, виконується із високим пріоритетом; основне її завдання - запланувати для виконання нижню половину оброблювача (DPC-процедуру). · Процедура відкладеної обробки переривання, DPC-процедура (DPC routine), відповідає коду нижньої половини оброблювача переривання в Linux. Вона виконує більшу частину роботи, пов'язаної з обробкою переривання, після чого сигналізує про необхідність переходу до коду завершення введення-виведення. Особливості виклику цих процедур під час виконання операції введення-виведення наведено нижче.
5. У Windows ХР на внутрішньому рівні всі операції введення-виведення, відображені пакетами IRP, є асинхронними. Будь-яку операцію синхронного введення-виведення відображають у вигляді сукупності асинхронної операції й операції очікування. Обробка запиту синхронного введення-виведення до однорівневого драйвера зводиться до такого: 1. Запит введення-виведення перехоплює динамічна бібліотека підсистеми (наприклад, підсистема Win32 перехоплює виклик функції WriteFile9 ()). 2. Динамічна бібліотека підсистеми викликає внутрішню функцію NtWriteFilе(), що звертається до менеджера введення-виведення. 3. Менеджер введення-виведення розмішує у пам'яті пакет IRP, що описує запит, і відсилає його відповідному драйверу пристрою викликом функції IoCallDriver (). 4. Подальші кроки аналогічні до описаних для Linux. 5. Драйвер витягає дані із пакета IRP, передає їх контролеру пристрою і дає йому команду почати введення-виведення. 6. Драйвер викликає функцію очікування, поточний потік при цьому призупиняють. Для асинхронного введення-виведення цей етап не виконують. 7. Коли пристрій завершує операцію, контролер генерує переривання, яке обслуговує драйвер. 8. Драйвер викликає функцію IoCompleteRequest() для тoгo щоб повідомити менеджерові введення-виведення про завершення ним обробки запиту, заданого пакетом IRP, після чого виконують код завершення операції. На двох останніх етапах зупинимося окремо. Обслуговування переривань Принципи обробки переривань введення-виведення у Windows ХР майже не відрізняються від розглянутих для Linux. У разі виникнення переривання апаратура викликає оброблювач переривання для даного пристрою. При цьому безпосередній оброблювач (верхня половина) звичайно залишається на рівні переривань пристрою тільки для того щоб поставити на виконання нижню половину (DPC) і завершитися. Основну роботу здійснює, як і в Linux, нижня половина, що виконується із меншим пріоритетом (на рівні переривань DPC/dispatch). Після завершення обробки драйвер просить менеджера введення-виведення завершити обробку запиту і вилучити із системи пакет IRP.
|
||||||
Последнее изменение этой страницы: 2017-02-05; просмотров: 273; Нарушение авторского права страницы; Мы поможем в написании вашей работы! infopedia.su Все материалы представленные на сайте исключительно с целью ознакомления читателями и не преследуют коммерческих целей или нарушение авторских прав. Обратная связь - 3.144.42.196 (0.005 с.) |