Компьютер для чайников: Что такое драйвера? Драйвер: это что такое и зачем он нужен.

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

Что такое драйвер и зачем он нужен

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

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

Часть драйверов уже есть в ОС Windows. Нам не нужно специально устанавливать драйвер клавиатуры, мышки даже для простеньких веб камер уже не требуются драйвера. Ну, если у Вас навороченная мышь с кучей дополнительных кнопок или клавиатура с кнопками для мультимедиа, то тут без дополнительных дров не обойтись.

Где хранятся драйвера

В Windows драйверы устройств хранятся в каталоге C:WINDOWSSYSTM32 . Файлы драйверов могут иметь следующие расширения: *.vxt , *.drv , *.sys, *.dll, также *.inf - файл содержит в себе сведения для установки.

Где скачать

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

С дисками всё вроде ясно как 2х2, а что делать если диск затерялся, испортился или ещё чего. Подарили например старый не нужный, но рабочий принтер, а диска к нему нет. Или появилась необходимость преустановить ОС, а дисков вообще нет, не найти. Вот и думай как установить звуковой драйвер, как где взять драйвера для принтера, видеокарты или ноутбука . В этой ситуации повезло тем у кого установлена Win7 (моё мнение об этой системе), та после установки на ПК сама подключится к интернету (при условии,что есть интернет соединение конечно ) и скачает все недостающие дрова. Во всяком случае на принтер я с диска драйвера уже давно не ставил. Всё происходит само собой. А вот для XP придётся искать самим. Хотя в ней вроде тоже есть функция скачивания, но сколько раз я не пробовал толку ни какого. Может что не так делаю подскажите а…?

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

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

Получаем информацию о видео карте.

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

Найти, скачать и потом установить драйвера можно пройдя вот по этим проверенным ссылкам:

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

После того, как всё скачено нужно правильно установить драйвер. Если с диска, то просто вставляете его и ждёте когда он автоматически запустится. В случае того, если авто запуск не работает, то открываем диск через мой компьютер и ищем файл setup.exe. Тоже самое касается скаченного драйвера, запускаем setup.exe. Вроде как то всё просто. Но, что делать, если ни как не удаётся установить драйвер . Был у меня случай, когда я не мог переустановить дрова на звук. При этом вылетало сообщение: сбой установки драйвера realtek hd audio .

Ещё сталкивался я с такой пакостью, когда с диска драйвер сканера ну ни в какую не хотел устанавливаться вернее не хотел устанавливаться стандартным способом - это, когда вставил диск и запустил setup.exe. Просто ни с того ни с сего установка останавливалась на середине и полный зависон. Требует вставать шнур в USB и хоть ты тресни. Решение проблемы было найдено, а посему делюсь:)

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

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

Проблемы с драйверами

Драйвера - это неотъемлемая часть программного комплекса компьютера, но и проблем с ними тоже порой хватает. Бывает такое, что драйвера конфликтуют. последствия: Синие экраны , сбои в работе устройств. В обоих случаях необходимо либо переустановить, обновить драйвер устройства либо, если проблемы начались после обновления откатится назад, как это делается видно на скриншоте выше по тексту, кнопочка Откатить . Нередко синие экраны возникают из-за проблем с дровами видяхи. Последующее обновление решает проблему.

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

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

В общем случае драйвер не обязан взаимодействовать с аппаратными устройствами, он может их только имитировать (например, драйвер принтера, который записывает вывод из программ в файл), предоставлять программные сервисы, не связанные с управлением устройствами (например, /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 - специальный код.

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

Сервис DriverPack автоматизирует процесс установки и обновления драйверов для Windows XP, Vista, 7, 8, 8.1 и 10. Он может сэкономить ваши время и нервы: весь процесс установки и настройки укладывается в несколько простых шагов.

DriverPack предлагает разные варианты загрузки драйверов. Какой из них выбрать, зависит от того, работает интернет или нет.

Как установить драйверы на Windows при активном подключении к Сети

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

Откройте сайт DriverPack Solution и скачайте утилиту DriverPack Online. Она сама найдёт в Сети нужные драйверы, загрузит их и установит на ваш .

Временно отключите антивирус, чтобы он не мешал, и запустите скачанный файл. В запущенной программе кликните на «Режим эксперта» - надпись в нижней части окна.

Откройте вкладку «Софт» и уберите галки напротив ненужных приложений. Если этого не сделать, то вместе с драйверами DriverPack Online установит «Яндекс.Браузер», Opera и другие программы, которые вам, возможно, не нужны.

Перейдите на вкладку «Драйверы» и нажмите на «Установить всё».

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

Как установить драйверы, если есть проблемы с интернетом

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

Итак, перейдите на сайт DriverPack Solution с помощью любого подходящего устройства и скачайте архив DriverPack Network. Он содержит драйверы, необходимые для работы сетевого оборудования, и программу для их автоустановки.

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

В окне запущенной программы нажмите на «Режим эксперта».

Попав на вкладку «Драйверы», нажмите на «Установить всё».

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

Настройка Windows 7 своими руками. Как сделать, чтобы работать было легко и удобно Гладкий Алексей Анатольевич

Драйвера и их назначение

Драйвера и их назначение

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

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

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

В настоящее время проблем с поиском нужного драйвера, как правило, не возникает. Во – первых, новое оборудование поставляется с компакт – диском, на котором, помимо прочих материалов (руководство по эксплуатации, и др.) имеется дистрибутив драйвера. Во – вторых, драйвер можно найти в Интернете – либо на сайте производителя оборудования, либо на других ресурсах, которых имеется великое множество (например, www . f reesoft . r , www . s oftodrom . r , и др.).

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

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

Из книги Fedora 8 Руководство пользователя автора Колисниченко Денис Николаевич

5.5.2.4. Проверка драйвера После загрузки убедитесь, что драйвер установлен и используется. Нажмите ‹Alt+F2›, введите system-config-display, перейдите в раскрывшемся окне на вкладку Оборудование и щелкните на кнопке Настроить напротив строки с идентификацией видеокарты. В

Из книги Как писать драйвера автора

Как писать драйвера (часть 1) Предисловие. Драйвера под Windows являются для большей массы программистов, "тайной за семью печатями". И вовсе не потому, что это что-то архисложное, сколько по причине абсолютной недокументированности идеологии.Начав заниматься этой темой я

Из книги Пишем драйвер Windows на ассемблере автора Компьютеры Автор неизвестен -

Как писать драйвера (часть 2) Прежде, чем хвататься за описание самого драйвера, давайте определимся с типами существующих драйверов.По существующему в DDK разделению сам Microsoft подразделяет драйвера на следующие типы:– Kernel-Mode Drivers;– Kernel Streaming Drivers;– Graphics Drivers;– Network

Из книги Сбои и ошибки ПК. Лечим компьютер сами автора Донцов Дмитрий

Из книги MySQL: руководство профессионала автора Паутов Алексей В

Из книги Серверные технологии хранения данных в среде Windows® 2000 Windows® Server 2003 автора Дайлип Наик

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

Из книги Установка, настройка и восстановление Windows 7 на 100% автора Ватаманюк Александр Иванович

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

Из книги Использование NuMega DriverStudio для написания WDM-драйверов автора Тарво Александр

Часть 2. API для WDM драйвера. Большинство функций драйверного API, которые нас интересуют, предоставляются модулем ntoskrnl.exe.Для их использования надо сделать следующее:1) Объявить типы данных и определить константы.Большинство определений для C находятся в файлах ntdef.h и wdm.h.2)

Из книги автора

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

Из книги автора

Из книги автора

Из книги автора

2.3 Модель мини-драйвера IDE В архитектуре Windows Server 2003 поддерживается новая модель мини- драйвера IDE, которая должна заменить существующую модель драйвера IDE. Новый драйвер порта, предоставляемый Microsoft, работает быстрее, обслуживает несколько каналов и позволяет отказаться

Из книги автора

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

Из книги автора

16.3. Откат драйвера Иногда приходится не только ставить драйверы с нуля, но и обновлять старые драйверы. Необходимость установки нового драйвера объясняется достаточно просто: новый драйвер практически всегда представляет собой исправленную версию старого драйвера

Из книги автора

2. Разработка драйвера в среде DriverStudio.

Из книги автора

2.2 Компиляция и установка драйвера. Проект, сгенерированный DriverWizard, находится в каталоге XDSP. В этом каталоге расположены файлы рабочего пространства (Workspace) VC++: XDSP.dsw, XDSP.ncd и XDSP.opt и два каталога – sys и exe. Здесь же находится файл XDSPioctl.h. В нем описаны управляющие коды,

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

Для разработки драйверов производителями внешних устройств необходимо наличие четкого, удобного, открытого и хорошо документированного интерфейса между драйверами и другими компонентами ОС. Драйвер взаимодействует, с одной стороны, с модулями ядра ОС (модулями подсистемы ввода-вывода, модулями системных вызовов, модулями подсистем управления процессами и памятью), а с другой стороны – с контроллерами внешних устройств. Поэтому существует два вида интерфейсов: интерфейс «драйвер-ядро» (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.