Что такое драйвер устройства Windows? Компьютер для чайников: Что такое драйвера

Драйвер (от английского Driver – водитель) – программа, отвечающая за работу данного устройства или оборудования, которая обеспечивает связь между компьютером и устройством. Драйверы еще иногда называют «дрова» (), а любое устройство называют еще «девайсом».

Например, выражение «дрова для камеры» означает «драйверы для камеры», что в свою очередь означает «программы для совместимости работы операционной системы с камерой».

Зачем нужны драйверы?

Появление новых устройств, все более сложных, происходит чрезвычайно быстро и в огромном количестве. Разрабатывают эти различные компании, придерживаясь своих собственных стандартов и взглядов на жизнь. Соответственно, заранее заложить в операционную систему какие-то программы, обеспечивающие совместимость операционной системы со всеми существующими и еще даже не придуманными устройствами, – невозможно.

Вот и получается, что каждый производитель того или иного устройства должен написать драйверы для своих новых устройств, иначе кто же купит такое несовместимое с компьютером устройство? Причем, программисты той компании, где разработано устройство, пишут несколько драйверов, обеспечивающих совместимость нового устройства с разными операционными системами. Тогда одно и то же устройство можно продавать пользователям разных операционных систем.

Как узнать, какие на моем компьютере устройства и драйверы?

Для узнать о том, какие есть устройства на ПК, можно в Диспетчере устройств. Чтобы открыть Диспетчер устройств, перейдите Пуск – Настройки – Панель управления – Система – вкладка «Оборудование»:

Более подробно о том, как узнать, какие на вашем компьютере устройства и драйверы, рассмотрим на примере Windows 7 . Для изменения параметров и обновления драйверов используется Диспетчер устройств . Чтобы открыть Диспетчер устройств (Device Manager) в Windows 7, щелкните кнопку Пуск, в строке Поиска меню Пуск введите «Диспетчер устройств» и щелкните по имени программы.

Другой способ открыть Диспетчер устройств в Windows 7: пройти по маршруту Пуск - Панель управления - Система и безопасность - вкладка «Оборудование и звук» - Устройства и принтеры - Диспетчер устройств:

В Диспетчере устройств выбираем необходимое устройство, например, Видеоадаптеры, кликаем по нему 2 раза левой кнопкой мыши, в выпадающем списке кликаем по нужному устройству правой кнопкой мыши и затем – по кнопке «Свойства». В результате откроется окно «Свойства», где на вкладке «Драйвер» находим информацию о производителе и драйвере этого устройства:

Нужно ли делать обновление драйверов устройств и каким образом?

В приведенном выше окне «Свойства» можно сделать обновление драйверов устройств, а также при неудачном обновлении драйвера сделать откат к старому драйверу.

Например, я не делаю обновлений драйверов для коммуникатора по причине следующих после этого неизбежных проблем с операционной системой.

С другой стороны, если не обновлять некоторые драйверы, то могут перестать нормально функционировать соответствующие этим драйверам устройства. Поэтому приходится пользоваться как кнопкой «Обновить» драйвера на приведенном выше скриншоте, так и кнопкой «Откатить».

Где найти драйверы?

Если коротко отвечать на этот вопрос, то:

  • драйверы иногда находит операционная система Windows 7 самостоятельно в Интернете и сама устанавливает их,
  • драйверы можно установить вручную с CD или DVD диска,
  • либо установить вручную с официального сайта производителя устройства.

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

Однако для некоторых устройств могут потребоваться специальные драйверы, обычно предоставляемые на лицензионном CD или DVD диске производителем конкретного устройства.

Например, драйвер для стандартной мышки включен в состав операционной системы. Но если приобрести специальную мышку для компьютерных игр с дополнительными кнопками и функциями, то без установки соответствующего драйвера такая мышка полноценно работать не будет.

Драйвер обычно при покупке прилагается к мышке на диске. CD или DVD диск с этим драйвером желательно сохранять даже после установки с него соответствующей программы на компьютер во избежание впоследствии недоразумений, например, при переустановке операционной системы.

CD или DVD диск с записанными на него драйверами прилагается также к новому принтеру, к новой веб-камере и т.п. Если такого диска нет, а продавец предлагает Вам поискать необходимый драйвер в Интернете (кстати, это реальный случай), то он что-то мудрит и покупать у него устройство не следует. Поэтому при покупке следует выяснять у продавца наличие диска с драйвером для нового устройства.

Если устройство досталось «бывшим в употреблении», а CD или DVD диск с драйверами отсутствует, то драйвер для такого устройства следует поискать на сайте производителя данного устройства. Для этого в поисковой строке Google или Яндекс следует ввести запрос примерно такого содержания: «официальный сайт Название устройства».

Например, для принтера Hewlett-Packard можно ввести запрос «официальный сайт HP». Подробнее я об этом писала в статье « ». Наверное, Вы уже догадались, что проблема с принтером возникла как раз из-за драйвера для принтера, то есть старый драйвер под Win XP с лицензионного диска не подошел для Win 7.

Драйверы необходимы не только для внешних устройств типа принтера, веб-камеры или мышки. Драйверы необходимы и для внутренних устройств, например, для материнской (системной) платы, для видеокарты, для звуковой карты.

Если видеокарта или звуковая карта встроены в материнскую плату, то драйвера для них не нужны, потому что они встроены в драйвера для материнской платы. Если видеокарта или звуковая карта устанавливаются отдельно, то для каждой карты нужен отдельный диск с драйверами.

Как устанавливать драйверы?

Если есть диск, то вставляем его и ждем, когда он автоматически запустится, загрузит программное обеспечение и на этом установка драйвера завершена.

Если этого по каким-то причинам не произошло, то идем в Пуск – Компьютер, кликаем по вставленному диску, находим и запускаем файл setup.exe.

Если драйвер скачен с официального сайта производителя, то точно также находим и запускаем setup.exe.

.
Уже более 3.000 подписчиков .

Драйвер устройства – небольшая программа, которая говорит и другим программам как обмениваться данными с аппаратным компонентом.

Например, драйверы принтера говорят операционной системе, а также и другим программам, у которых есть данные для принтера, в точности как печатать информацию на странице.

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

Так же работают и видеокарты, клавиатуры, мониторы и т.п.

Как работают драйвера устройства?

Представьте, что драйвера устройства – переводчики между программой, которую вы используете и устройством, которое эта программ хочет каким-либо образом используете. Программное и аппаратное обеспечение создавалось разными людьми или компаниями и говорят на двух совершенно разных языках, а этот переводчик (драйвер) дает им возможность общаться.

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

Благодаря драйверам, большинству программ не нужно знать, как работать напрямую с аппаратным обеспечением, а драйверу не нужно знать весь опыт пользователей по работе с приложением.

Вместо этого программе и драйверу просто нужно знать, как общаться между собой.

И это очень удобно для всех, ведь на рынке присутствует практически бесконечное разнообразие программ и устройств. Если бы каждому требовалось знать, как общаться со всеми остальными – процесс разработки программ и устройств стал бы невозможным.

Как работать с драйверами устройств

Чаще всего драйвера устанавливаются автоматически и не требуют никакого вмешательства пользователя, кроме периодического их обновления, устраняющего неполадки и добавляющего новые интересные функции.

Драйвера для каждого аппаратного компонента в вашем компьютере с операционной системой Windows централизованно управляются приложением Менеджер устройств , имеющемся во всех версиях Microsoft Windows.

Вот несколько типичных задач в Windows, в которых участвуют драйвера:

  • Как обновлять драйвера в Windows
  • Как найти номер версии драйвера в Windows
  • Как отменить обновление драйвера в Windows

Вот несколько дополнительных ресурсов, касающихся драйверов:

  • Бесплатные инструменты обновления драйверов
  • Драйвера Windows 10 (обновленный список)
  • Драйвера Windows 8 (обновленный список)
  • Драйвера Windows 7 (обновленный список)
  • Как найти и скачать драйвера с сайтов производителей
  • Популярный сайты для скачивания драйверов
  • Как определить, 32-битная или 64-битная версия Windows установлена

Многие проблемы, связанные с конкретным устройство, могут быть не проблемами с его аппаратной частью, а ошибками в работе драйвера устройства, установленного в системе. В этом случае вам помогут ресурсы, указанные выше.

Дополнительная информация о драйверах устройств

Кроме базовых взаимоотношений программа-драйвер-устройство есть и другие интересные ситуации, в которой участвую драйвера (и в которых нет).

Хотя сейчас это уже не настолько типично, некоторые программы могут напрямую связываться с некоторыми типами устройств – драйвера не требуются! Обычно это возможно только если программа передает устройству очень простые команды, либо когда и устройство, и программа разработаны одной компанией, но это можно рассматривать и как встроенный драйвер.

Некоторые драйвера напрямую связываются с устройством, но другие располагаются по уровням. В подобных ситуациях программа будет связываться с одним драйвером, затем этот драйвер свяжется с другим, и так далее, пока последний драйвер действительно не передаст данные напрямую устройству.

Эти «средние» драйверы не выполняют никаких функций, кроме как проверяют, нормально ли работают другие драйверы. Но как в случае одного драйвера, так и нескольких «уровней», все операции происходят на заднем плане, без вашего участия.

Драйвера - это компьютерная программа, с помощью которой другие программы (обычно операционная система) получают доступ к аппаратному обеспечению некоторого устройства. Обычно с операционными системами поставляются драйверы для ключевых компонентов аппаратного обеспечения, без которых система не сможет работать. Однако для некоторых устройств (таких, как видеокарта или принтер) могут потребоваться специальные драйверы, обычно предоставляемые производителем устройства.

В общем случае драйвер не обязан взаимодействовать с аппаратными устройствами, он может их только имитировать (например, драйвер принтера, который записывает вывод из программ в файл), предоставлять программные сервисы, не связанные с управлением устройствами (например, /dev/zero в Unix, который только выдаёт нулевые байты), либо не делать ничего (например, /dev/null в Unix и NUL в DOS/Windows).

Также в бизнес-терминологии существуют термины "драйверы проекта", "драйверы бизнеса" и т.п.

Если устройство является внутренним, т.е. выполнено в виде платы расширения:

помните, что самостоятельно устанавливать устройства в компьютер можно, только если это предусмотрено гарантией на системный блок или если гарантия уже закончилась;

выключите компьютер (нужно полностью выключить компьютер, а не перевести его в ждущий режим!);

снимите крышку системного блока;

убедитесь, что у вас есть свободный слот расширения подходящего типа (напомню, современные платы расширения могут быть выполнены в виде PCI-, PCIeX-карт или AGP-карт – для видео);

установите устройство (сильно нажимать не нужно, чтобы не сломать его);

закройте крышку системного блока;

включите питание компьютера.

Если устройство внешнее:

если устройство подключается к шине USB, то просто подключите его к свободному гнезду USB;

если устройство не является USB-устройством, то выключите компьютер, подключите устройство и включите питание компьютера.

USB-устройства можно подключать и отключать в процессе работы компьютера, не отключая питания. Также в большинстве случаев USB-устройства не требуют собственного блока питания, поскольку получают питание от компьютера. Остальные внешние устройства (не USB) оснащены блоками питания.

Universal Plug and Play (UPnP) - набор сетевых протоколов, публикуемых форумом UPnP. Цель UPnP - универсальная автоматическая настройка сетевых устройств как дома, так и в корпоративной среде. Состоит из набора сопутствующих протоколов, построенных на открытых интернет-стандартах.

UPnP (Universal Plug and Play) - это архитектура многоранговых соединений между персональными компьютерами и интеллектуальными устройствами, установленными, например, дома. UPnP строится на основе стандартов и технологий интернета, таких как TCP/IP, HTTP и XML, и обеспечивает автоматическое подключение подобных устройств друг к другу и их совместную работу в сетевой среде, в результате чего сеть (например, домашняя) становится лёгкой для настройки большему числу пользователей.

Plug-and-play (сокр. PnP - "включай и играй (работай)") - означает, что не нужно ничего настраивать, достаточно подключить устройство к компьютеру и можно начинать работу. Хорошим примером такого рода устройств являются концентраторы (хабы). Достаточно подключить кабели к сетевым адаптерам и портам концентратора для того, чтобы можно было работать в сети.

Разработана фирмой Microsoft при содействии других компаний.

Основные знания о PnP:

PNP BIOS - расширения BIOS для работы с PnP устройствами.

Plug and Play Device ID - индификатор PnP устройства имеет вид PNPXXXX, где XXXX - специальный код.

Компьютер для чайников: Что такое драйвера?

Компьютер, за которым Вы сейчас работаете, состоит из многих составных частей.

Если у Вас персональный компьютер, то это отдельно стоящие системный блок (часто его называют процессором, что не совсем верно), монитор, клавиатура, мышка, может еще и принтер, видеокамера, колонки и микрофон. Может еще что-то. И все эти составные части персонального компьютера соединены проводами.

Из невидимых нами устройств (спрятанные в системный блок) — это видеокарта и звуковая карта, к которым подключаются монитор, колонки и микрофон.

Если у Вас ноутбук, нетбук или моноблок, то все перечисленные компоненты (ну почти все) компактно объединены в один корпус. Но в любом случае являются составными частями компьютера.

Так вот. Чтобы каждый из этих компонентов работал и работал корректно, необходимы специальные программы, которые и позволяют функционировать этим устройствам.

Например, специальная программа, установленная для видеокарты, позволяет Вам любоваться экраном Вашего монитора, картинки на котором имеют 32 миллиона цветовых оттенков и не раздражающим глаза мерцание монитора.

Перемещение физической мышки, которая находится у Вас в руке, по столу или коврику вызывает перемещение указателя мышки по экрану монитора в том же направлении, в котором Вы перемещаете физическую мышку. И этими манипуляциями управляет тоже специальная программа.

Когда Вы нажимаете клавишу на своей клавиатуре, то на экране монитора печатается именно тот символ, который «нарисован» на клавише. И печатается этот символ именно в том месте, которое Вы указали. И делает это тоже специальная программа, установленная на Вашем компьютере.

И все эти специальные программы называются драйверы или драйверы устройств . По сути — этопрограммы управления устройствами .

Итак, два ответа на вопрос, «Что такое драйвера, зачем они нужны?», я надеюсь, мы получили. Теперь осталось выяснить, как их устанавливать.

Я бы немного перефразировал этот вопрос. Нужно ли устанавливать драйвера на Вашем компьютере? А если нужно, то как?

В большинстве случаев Вам лично устанавливать драйвера на Ваш компьютер не нужно и вот почему.

Если Вы купили компьютер в специализированном магазине, то, как правило, все необходимые драйвера для устройств Вашего компьютера уже установлены и установлены корректно (т.е. обеспечивают правильную работу ваших устройств).

Даже если Вам придется переустанавливать операционную систему, очень больших сложностей с драйверами у Вас тоже не должно быть. В арсенале дистрибутива операционной системы (установочный CD/DVD диск) есть практически все стандартные драйвера. И при установке операционная система сама определит, какое оборудование установлено и сама установит необходимые программы.

Последние версии операционных систем вообще поступают проще. Если после установки обнаруживается, что в дистрибутиве нет необходимого драйвера, то операционная система «лезет» в интернет, скачивает необходимый драйвер и устанавливает его. Правда здесь есть одна тонкость. Должна быть настроена сеть и подключен интернет, т.е. драйвера для сетевой карты должны быть уже установлены.

Но в любом случае при покупке персонального компьютера к нему обязательно прикладывается диск с нужными драйверами. Ну а если это ноутбук, то установочные файлы для восстановления операционной системы и драйвера обычно записаны на защищенный раздел жесткого диска.

Но, конечно, бывают ситуации, когда Вам самим придется устанавливать драйвера вручную.

Вот пару примеров. Вы решили поменять Вашу видеокарту (в персональном компьютере это довольно просто) на новую навороченную с каким-нибудь новейшим графически ускорителем для профессиональной работы с 3D графикой. Или купили новый МФУ (многофункциональное устройство — копир, сканер и принтер — все в одном).

В этом случае к видеокарте или принтеру обязательно прилагается диск с нужными драйверами. Диск вставляется в CD/DVD привод. Автоматически запускается программа с «красивым» меню с предложениями установить драйвера и сопутствующее программное обеспечение. Выбираете необходимые программы и приложения. Запускаете установку. Через некоторое время операционная система сообщит Вам, что драйвера и необходимые программы и приложения установлены.

Хорошо, это новое оборудование. А как посмотреть, какое оборудование уже установлено и нет ли там проблем с драйверами? Все ли драйвера установлены и, если нет, как их установить?

Для того чтобы посмотреть какое оборудование установлено на вашем компьютере и в каком оно состоянии, необходимо «вызвать» Диспетчер устройств.

Как вызывается диспетчер устройств, я покажу на примерах для двух популярных операционных систем от корпорации Microsoft — Windows XP и Windows7.

Для Windows XP:

Для Windows 7:


В окне Диспетчера устройств Вы видите описание устройств, установленных на Вашем компьютере. Если напротив описания Вы нажмете левой кнопкой мыши на «плюсик» (Windows XP) или «стрелочка (Windows 7)», то раскроется описание, какая именно модель оборудования у Вас установлена.

Вот с этого окна и устанавливаются или обновляются драйвера устройств.

Если у вас список «чистый», т. е. без желтых восклицательных знаков и красных крестиков, то все драйвера у Вас установлены и работают корректно.

Немного хуже, если напротив устройств Вы увидите восклицательные знаки на фоне желтых кружков.

Это значит, что драйвер установлен не совсем корректно и конфликтует с другим устройством. В этом случае Вам надо удалить этот драйвер и перезапустить компьютер, чтобы он еще раз обнаружил устройство и установил драйвер заново. Если восклицательный знак и после этого остался, то придется искать последнюю обновленную версию драйвера для этого устройства в интернете.

И уж совсем нехорошо, если напротив устройства красный крестик.

Это означает, что в «арсенале» операционной системы нет драйвера для этого устройства в принципе. Значит надо искать драйвер в интернете, скачивать его и устанавливать.

Может возникнуть резонный вопрос: как, что и где искать, если об этих самых драйверах мы имеем самое общее представление.

Разнообразный набор драйверов для широкого круга популярных периферийных устройств – непременное условие популярности ОС у пользователей.

Для разработки драйверов производителями внешних устройств необходимо наличие четкого, удобного, открытого и хорошо документированного интерфейса между драйверами и другими компонентами ОС. Драйвер взаимодействует, с одной стороны, с модулями ядра ОС (модулями подсистемы ввода-вывода, модулями системных вызовов, модулями подсистем управления процессами и памятью), а с другой стороны – с контроллерами внешних устройств. Поэтому существует два вида интерфейсов: интерфейс «драйвер-ядро» (Driver Kernel Interface, DKI) и интерфейс «драйвер-устройство» (Driver Device Interface).

Интерфейс «драйвер-ядро» должен быть стандартизован в любом случае. Подсистема ввода-вывода может поддерживать несколько различных интерфейсов DKI/DDI, предоставляя специфический интерфейс для устройств определенного класса. К наиболее общим классам относятся блочные устройства, например, диски, и символьные устройства, такие как клавиатура и принтеры. Может существовать класс сетевых адаптеров и др. В большинстве современных ОС определен стандартный интерфейс, который должен поддерживать все блочные драйверы, и второй стандартный интерфейс, поддерживаемый всеми символьными адаптерами. Эти интерфейсы включают наборы процедур, которые могут вызываться остальной операционной системой для обращения к драйверу. К этим процедурам относятся, например, процедуры чтения блока или записи символьной строки.

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

У драйверов устройств есть множество функций:

1. Обработка запросов записи-чтения от программного обеспечения управления устройствами. Постановка запросов в очередь.

2. Проверка входных параметров запросов и обработка ошибок.

3. Инициализация устройства и проверка статуса устройства.

4. Управление энергопотреблением устройства.

5. Регистрация событий в устройстве.

6. Выдача команд устройству и ожидание их выполнения, возможно, в блокированном состоянии, до поступления прерывания от устройства.

7. Проверка правильности завершения операции.

8. Передача запрошенных данных и статуса завершенной операции.

9. Обработка нового запроса при незавершенном предыдущем запросе (для реентерабельных драйверов).

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

Многие драйверы обладают сходной общей структурой. Типичный драйвер начинает работу с проверки входных параметров. Если они не удовлетворяют определенным критериям, драйвер возвращает ошибку. В противном случае драйвер преобразует абстрактные термины в конкретные. Например, дисковый драйвер преобразует линейный номер кластера в номер головки, дорожки и сектора.

Затем драйвер может проверить, не используется ли это устройство в данный момент. Если устройство занято, запрос может быть поставлен в очередь. Если устройство свободно, проверяется статус устройства, чтобы понять, может ли запрос быть обслужен прямо сейчас. Может оказаться необходимым включить устройство или запустить двигатель, прежде чем начнется перенос данных. Как только устройство включено и готово, начинается собственно управление устройством.

Управление устройством подразумевает выдачу ему серии команд. Именно в драйвере определяется последовательность команд в зависимости от того, что должно быть сделано. Определившись с командой, драйвер начинает записывать их в регистры контроллера устройства. После записи каждой команды в контроллер, возможно, будет нужно проверить, принял ли контроллер команду и готов ли принять следующую. Такая последовательность действий продолжается до тех пор, пока контроллеру не будут переданы все команды. Некоторые контроллеры способны принимать связные списки команд, находящихся в памяти. Они сами считывают и выполняют их без дальнейшей помощи ОС.

После того как драйвер передал все команды контроллеру, ситуация может развиваться по двум сценариям. Во многих случаях драйвер устройства должен ждать, пока контроллер не выполнит для него определенную работу, поэтому он блокируется до тех пор, пока прерывание от устройства не разблокирует его. В других случаях операция завершается без задержек и драйверу не нужно блокироваться. В любом случае по завершении выполнения операции драйвер должен проверить, завершилась ли операция без ошибок. Если все в порядке, драйверу, возможно, придется передать данные (например, только что прочитанный блок) независимому от устройств программному обеспечению. Наконец, драйвер возвращает информацию о состоянии для информирования вызывающей программы о статусе завершения операции. Если в очереди находились другие запросы, один из них теперь может быть выбран и запущен. В противном случае драйвер блокируется в ожидании следующего запроса.

Для поддержки процесса разработки драйверов операционной системы выпускается так называемый пакет DDK (Driver Development Kit), представляющий собой набор инструментальных средств-библиотек, компиляторов и отладчиков.

Так как набор потенциально поддерживаемых данных ОС периферийных устройств всегда шире набора устройств, которыми ОС должна управлять при установке на конкретной машине, то ценным свойством ОС является возможность динамически загружать в оперативную память требуемый драйвер (без остановки ОС) и выгружать его, если надобность в драйвере отпала. Такое свойство ОС может существенно сэкономить системную область памяти.

Альтернативой динамической загрузке драйверов при изменении текущей конфигурации внешних устройств компьютера является повторная компиляция кода ядра с требуемым набором драйверов, что создает между всеми компонентами ядра статические связи вместо динамических. Например, таким образом решалась данная проблема в ранних версиях ОС UNIX. При статистических вызовах между ядром и драйверами структура ОС упрощается, но этот подход требует наличия исходных кодов модулей ОС, доступность которых скорее является исключением (для некоммерческих версий UNIX). Кроме того, в этом варианте работающую версию ОС надо остановить и заменить новой, что не всегда допустимо в некоторых применениях.

Поэтому поддержка динамической загрузки драйверов является практически обязательным требованием для современных универсальных ОС.

Первоначально термин «драйвер» применялся в достаточно узком смысле – под драйвером понимается программный модуль, который:

Входит в состав ядра ОС, работая в привилегированном режиме;

Непосредственно управляет внешним устройством, взаимодействуя с его контроллером с помощью команд ввода-вывода компьютера;

Обрабатывает прерывания от контроллера устройства;

Предоставляет прикладному программисту удобный логический интерфейс работы с устройством, экранируя от него низкоуровневые детали управления устройством и организации его данных;

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

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

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

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

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

На практике используют от двух до пяти уровней драйверов, поскольку с увеличением числа уровней снижается скорость выполнения операций ввода-вывода.

Высокоуровневые драйверы оформляются по тем же правилам и придерживаются тех же внутренних интерфейсов, что и аппаратные драйверы. Как правило, высокоуровневые драйверы не вызываются по прерываниям, так как взаимодействуют с устройством через посредничество аппаратных драйверов.

В модулях подсистемы ввода-вывода, кроме драйверов, могут присутствовать и другие модули, например, дисковый кэш. Достаточно специфичные функции кэша делают нецелесообразным оформление его в виде драйвера, взаимодействующего с другими модулями ОС только с помощью услуг менеджера ввода-вывода. Другим примером модуля, который чаще всего не оформляется в виде драйвера, является диспетчер окон графического интерфейса. Иногда этот модуль вообще выносится из ядра ОС и реализуется в виде пользовательского интерфейса. Таким образом, был реализован диспетчер окон в Windows NT 3.5 и 3.51, но этот микроядерный подход заметно замедляет графические операции, поэтому в Windows 4.0 диспетчер окон и высокоуровневые графические драйверы, а также графическая библиотека GDI были перенесены в пространство ядра.

Аппаратные драйверы после запуска операции ввода-вывода должны своевременно реагировать на завершение контроллером заданного действия путем взаимодействия с системой прерывания. Драйверы более высоких уровней вызываются не по прерываниям, а по инициативе аппаратных драйверов или драйверов вышележащего уровня. Не все процедуры аппаратного драйвера нужно вызывать по прерываниям, поэтому драйвер обычно имеет определенную структуру, в которой выделяется секция обработки прерываний (Interrupt Service Routine, ISR), которая и вызывается от соответствующего устройства диспетчером прерываний.

В унификацию драйверов большой вклад внесла ОС UNIX, в которой все драйверы были разделены на два класса: блок-ориентированные (Block-oriented) и байт-ориентированные (Character-oriented) драйверы. Это более общее деление, чем деление на вертикальные подсистемы. Например, драйверы графических устройств и сетевых устройств относятся к классу байт-ориентированных.

Блок-ориентированные драйверы управляют устройствами прямого доступа, которые хранят информацию в блоках фиксированного размера, каждый из которых имеет свой адрес. Адресуемость блоков приводит к тому, что для дисков, являющихся устройствами прямого доступа, появляется возможность кэширования данных в оперативной памяти. Это обстоятельство значительно влияет на общую организацию ввода-вывода для блок-ориентированных драйверов.

Устройства, с которыми работают байт-ориентированные драйверы, не адресуют данные и не позволяют производить операции поиска данных, они генерируют или потребляют последовательность байта (терминалы, принтеры, сетевые адаптеры и т.п.).

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

В свое время ОС UNIX сделала очень важный шаг по унификации операций и структуризации программного обеспечения ввода-вывода. В ОС UNIX все устройства рассматриваются как виртуальные (специальные) файлы, что дает возможность использовать общий набор базовых операций ввода-вывода для любых устройств независимо от их специфики. Подобная идея реализована позже в MS-DOS, где последовательные устройства – монитор, принтер и клавиатура – считаются файлами со специальными именами: con, prn, con.



Просмотров