Сайт о телевидении

Сайт о телевидении

» » Что такое драйвер и как его установить? Что делают драйверы устройств и как они работают

Что такое драйвер и как его установить? Что делают драйверы устройств и как они работают

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

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

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

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

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

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

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

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

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

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

Что такое драйвер

Драйвер устройства – это специализированное программное обеспечение, которое используется во всех версиях Windows. Благодаря ему другие программы и устройства, которые связаны с данным ПК могут с ним взаимодействовать. Они используются при работе любого оборудования, которое установлено на этом компьютере.

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

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

Какие функции выполняют программы посредников

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

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

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

Как работают драйвера на компьютере

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

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

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

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

Таков принцип работы программ посредников на ПК.

Что будет, если драйвера нет

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

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

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

Для каких устройств нужны драйвера

Чаще всего подобные микропрограммы понадобятся для следующих приборов, подключенных к ПК:

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

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

Где их найти

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

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

Есть специальные пакеты, в которых находятся все дрова на любую операционную систему. Один из таких пакетов называется «Driver Pack online». Скачать ее можно с официального сайта, утилита достаточно объемная, порядка 12 ГБ. Но после переустановки Виндоус он вам очень сильно поможет. Перечень и обзор лучших приложений можно найти у нас на сайте.

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

Где посмотреть информацию о драйверах

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

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

Прочитать информацию о микропрограмме можно нажав на устройство правой кнопкой и кликнув «Свойства ».

Таким образом вы получите всю необходимую информацию.

Где хранятся драйверы на компьютере

Все драйвера размещены в папке drivers. Зайти в нее можно кликнув по диску «С» и открываете папку Windows. В ней находите другую папку с названием «drivers» — именно тут можно найти управляющие утилиты.

Данная папка есть во всех версиях Windows.

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

Драйвер: это что такое в общем понимании?

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

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

Вопросы установки драйверов устройств

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

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

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

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

Как и где найти нужный драйвер, если в Windows его нет?

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

Для этого предусмотрены специальные идентификаторы, которые соответствуют конкретному устройству (DEV и VEN). Чтобы их найти, необходимо через ПКМ в меню свойств вызвать раздел свойств и перейти на вкладку сведений, где в информационном списке выбирается ИД оборудования. Самая длинная строка и будет в полной мере соответствовать описанию устройства. Таким образом, тот же сетевой драйвер можно найти в интернете, задав в поиске именно эту комбинацию.

После скачивания драйвер можно установить самостоятельно. Если это EXE-файл - проблем нет, только запускать инсталлятор необходимо от имени администратора.

В случае с INF-файлом драйвер можно установить через меню ПКМ или указать системе установку из указанного места при обновлении драйвера в «Диспетчере устройств».

Использование автоматизированных утилит

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

Здесь на помощь приходят специализированные программные пакеты для автоматического поиска и установки драйверов вроде Driver Booster, DriverPack Solution и им подобные. А вот такие утилиты, определив все устройства, которые присутствуют в компьютерной системе, обращаются не к собственным или сторонним базам данных, а непосредственно к ресурсам производителей оборудования и разработчиков соответствующего программного обеспечения, загружая и устанавливая его без видимого участия самого пользователя (его участие сводится только к тому, чтобы согласиться с предложением инсталляции или обновления). Плюс ко всему, эти программы следят за актуальным состоянием драйверов, постоянно проверяя выход новых версий (чего 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 - специальный код.

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

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