
ПРЕИМУЩЕСТВА И НЕДОСТАТКИ ДРАЙВЕРНЫХ МОДЕЛЕЙ
WDM И WDF
Студ. Соколов М.А., студ. Цзян А.В. (МГУПИ)
В статье проведена сравнительная характеристика драйверных моделей WDM и WDF, охарактеризованы их основные функции и назначение, определены преимущества и недостатки, а также обоснована перспективность использования.
Введение
Бурное развитие компьютерной техники и периферии привел к тому, что функционально насыщенная аппаратура выполняет не только работу, для которой она приобретается (управление механизмами, ведения финансовой отчетности, проектирования, игры и т.д.), но и самостоятельно решает задачи конфигурирования и настройки. Однако существующие проблемы, возникающие при конфигурировании устройств, ведут к необходимости создания новых драйверных моделей (или концепций, хотя «модель» – более корректно), которые будут использовать возможности новых аппаратных и программных средств, преодолевать недостатки старой модели, облегчать процесс написания драйверов и т.п.
Собственно, сама драйверная модель или концепция представляет собой основу для взаимодействия системы с любыми устройствами (системными/ периферийными, реальными/виртуальными и т.д.) [2 - 6]. Поэтому, актуальность темы программирования драйверов всегда имела большое значение и будет иметь. Конечно, драйверные модели рано или поздно меняются. Изменение драйверной модели, как правило, ведет за собой изменение большого количества компонентов, к примеру, архитектуры операционных систем [2, 3, 5 - 7]. Но, тем не менее, суть драйверной модели или концепции одна – это тот «мост», интерфейс, который обеспечивает взаимодействие устройства с компьютером.
Таким образом, цель статьи - провести сравнительный анализ подходов и принципов работы драйверных моделей WDM и WDF и определить их преимущества и недостатки.
«В мире Assembler-а» или эпоха dos
Прежде чем мы будем говорить о драйверах конкретной драйверной модели, хотелось бы совершить небольшой исторический экскурс во времена MS DOS и «господство» Assembler-а.
Как мы все помним, первые PC-ки работали на процессорных чипах Intel, способных адресовать до 640 Кбайт «реальной» памяти, а сам процессор работал только в реальном режиме, в котором объединял информацию из двух 16-разрядных регистров и формировал 20-разрядный адрес для каждой команды, содержащей ссылку на память. В архитектуре компьютера были предусмотрены слоты расширения, в которых отважные пользователи могли устанавливать карты, приобретенные отдельно от самого компьютера.
Ни для кого не секрет, что тогда все драйверы писались исключительно на ассемблере и никакой «драйверной модели» не существовало и в помине, по крайней мере, в том виде, в котором мы знаем её сейчас. Поэтому, системные программисты волей-неволей были вынуждены учиться программировать операции с оборудованием напрямую. В самой MS-DOS использовалась схема, основанная на файле CONFIG.SYS, позволявшая операционной системе загружать драйверы реального режима для исходного оборудования и карт расширения.
Но прогресс не стоял на месте. Так компания Microsoft выпустила свою первую графическую ОС Windows . Поначалу она была просто графической оболочкой для MS-DOS реального режима. Со временем появился набор Windows-драйверов для основного оборудования, включая экран, клавиатуру и мышь. Драйверы представляли собой исполняемые файлы с расширением .DRV и писались в основном на ассемблере [7]. С появлением компьютеров класса AT компания Microsoft разработала версию Windows для защищенного режима. Однако все оборудование, кроме стандартных устройств Windows (экран, клавиатура, мышь), продолжало обслуживаться драйверами MS-DOS реального режима.
Наконец, спустя некоторое время была выпущена Windows 3.0. Но теперь возникла новая большая проблема, а именно - поддержка многозадачности приложений [7]. Чтобы разные приложения могли совместно работать с физическим оборудованием, компания Microsoft ввела концепцию драйвера виртуального устройства, основной функцией которого была «виртуализация» оборудования. Такие драйверы обычно сокращенно назывались VxD. При помощи этой концепции Windows 3.0 создавала впечатление, что каждая виртуальная машина оснащена собственным набором экземпляров многих аппаратных устройств. Но сами устройства в большинстве случаев продолжали обслуживаться драйверами реального режима MS-DOS [7].
Спустя некоторое время, OS/2 от Microsoft, которую она разрабатывала в «гармонии» с IBM, превратилась в Windows NT, первый выпуск которой состоялся в начале 1990-х, вскоре после выхода Windows 3.1. Microsoft изначально строила Windows NT с намерением превратить ее в надежную и безопасную платформу для работы Windows-приложений. Драйверы для Windows NT использовали принципиально новую технологию режима ядра, которая не имела практически ничего общего с предыдущими драйверными технологиями. Драйверы Windows NT программировались почти исключительно на языке СИ, чтобы их можно было компилировать для новых процессорных архитектур без изменения исходных кодов [7].
Тем не менее, Windows 3.0 выросла в 3.1, 3.11 и Windows 95. Кроме того, начиная с Windows 95, программисты могли выкинуть распечатки портов ввода/вывода благодаря новой технологии Plug and Play, которая в определенной степени автоматизировала идентификацию и настройку оборудования.