Драйвер это программа обеспечивающая взаимодействие ос с периферийным устройством
Дра́йвер (англ. driver ) (множественное число дра́йверы, вариант драйвера́ разговорный и профессиональный) — компьютерная программа, с помощью которой другая программа (обычно операционная система) получает доступ к аппаратному обеспечению некоторого устройства. В общем случае, для использования любого устройства (как внешнего, так и внутреннего) необходим драйвер. Но обычно с операционными системами поставляются драйверы для ключевых компонентов аппаратного обеспечения, без которых система не сможет работать. Однако для некоторых устройств (таких, как графическая плата или принтер) могут потребоваться специальные драйверы, обычно предоставляемые производителем устройства.
Содержание
Идеология построения драйверов
Операционная система управляет некоторым «виртуальным устройством», которое понимает стандартный набор команд. Драйвер переводит эти команды в команды, которые понимает непосредственно устройство. Эта идеология называется «абстрагирование от аппаратного обеспечения». Впервые в отечественной вычислительной технике подобный подход появился в серии ЕС ЭВМ, а такого рода управляющие программы назывались канальными программами.
Драйвер состоит из нескольких функций, которые обрабатывают определенные события операционной системы. Обычно это 7 основных событий:
- загрузка драйвера. Тут драйвер регистрируется в системе, производит первичную инициализацию и т. п.;
- выгрузка. Драйвер освобождает захваченные ресурсы — память, файлы, устройства и т. п.;
- открытие драйвера. Начало основной работы. Обычно драйвер открывается программой как файл, функциями CreateFile() в Win32 или fopen() в UNIX-образных системах;
- чтение;
- запись: программа читает или записывает данные из/в устройство, обслуживаемое драйвером;
- закрытие: операция, обратная открытию, освобождает занятые при открытии ресурсы и уничтожает дескриптор файла;
- управление вводом-выводом-IO Control-IOCTL. Зачастую драйвер поддерживает интерфейс ввода-вывода, специфичный для данного устройства. С помощью этого интерфейса программа может послать специальную команду, которую поддерживает данное устройство. Например, для SCSI устройств можно послать команду GET_INQUIRY, чтобы получить описание устройства. В Win32 системах управление осуществляется через API-фунцию DeviceIoControl(). В ioctl()
Интеграция драйверов
По мере развития систем, сочетающих в себе на одной плате не только центральные элементы компьютера, но и большинство устройств компьютера в целом, возник вопрос удобства поддержки таких систем, получивших название «аппаратная платформа», или просто «платформа».
Сначала производители платформ поставляли набор отдельных драйверов для операционных систем, собранный на один носитель (обычно CD), Затем появились установочные пакеты, называвшиеся «4-in-1» и «One touch», и позволявшие упростить установку драйверов в систему. Однако единого, устоявшегося термина долго не было.
Современный термин, описывающий такие наборы драйверов устройств — Board Support Package, или «пакет поддержки платформы». Помимо собственно драйверов, он может, как и прочие установочные пакеты, содержать модули операционной системы и программы.
См. также
Ссылки
Микроядро • Монолитное ядро • Гибридное ядро • Пространство ядра (kernel space) • Модульное ядро • Наноядро • Драйвер • Пространство пользователя • Область пользователя • Экзоядро
Защита памяти • Сегментация памяти • Страничная память (Paging) • Блок управления памятью • Ошибка сегментации • Общая ошибка защиты
Wikimedia Foundation . 2010 .
Полезное
Смотреть что такое "Драйвер устройства" в других словарях:
Драйвер устройства — программа, написанная специально для конкретного периферийного устройства с целью обеспечить управление этим устройством со стороны операционной системы. По английски: Device driver См. также: Драйверы Финансовый словарь Финам … Финансовый словарь
драйвер устройства — įtaiso tvarkyklė statusas T sritis radioelektronika atitikmenys: angl. device driver vok. Gerätetreiber, m rus. драйвер устройства, m pranc. gestionnaire de périphérique, m … Radioelektronikos terminų žodynas
драйвер устройства — программная процедура, управляющая конкретным устройством, например, дисковым накопителем, звуковой картой и проч. (см. драйвер) … Русский индекс к Англо-русскому словарь по музыкальной терминологии
Драйвер управления доступом к среде — драйвер устройства: работающий на подуровне управления доступом к среде модели OSI; обеспечивающий низкоуровневый доступ к сетевым адаптерам. По английски: Media Access Control driver Синонимы: Драйвер платы сетевого адаптера, NIC драйвер… … Финансовый словарь
ДРАЙВЕР — Вспомогательная компьютерная программа, которая обеспечивает действие какого то определенного комплектующего устройства (обычно даже какой то конкретной его модели и, естественно, фирмы производителя), подключенного к компьютеру, на котором она… … Словарь бизнес-терминов
драйвер пользователя (нестандартного периферийного устройства) — Обеспечивает взаимодействие программ с устройством (пользователя) по стандартному интерфейсу. [Е.С.Алексеев, А.А.Мячев. Англо русский толковый словарь по системотехнике ЭВМ. Москва 1993] Тематики информационные технологии в целом EN user written… … Справочник технического переводчика
Драйвер — У этого термина существуют и другие значения, см. Драйвер (значения). Операционные системы … Википедия
Драйвер (электроника) — Микросхема драйвер RS 232 Драйвер (англ. driver управляющее устройство, водитель) электронное устройство, предназначенное для преобразования электрических сигналов, целью которого является управление че … Википедия
драйвер печатающего устройства — spausdintuvo tvarkyklė statusas T sritis radioelektronika atitikmenys: angl. printer driver vok. Druckertreiber, m rus. драйвер печатающего устройства, m pranc. gestionnaire d imprimante, m … Radioelektronikos terminų žodynas
Как уважаемый хабрапользователь наверняка знает, «драйвер устройства» — это компьютерная программа управляющая строго определенным типом устройства, подключенным к или входящим в состав любого настольного или переносного компьютера.
Основная задача любого драйвера – это предоставление софтового интерфейса для управления устройством, с помощью которого операционная система и другие компьютерные программы получают доступ к функциям данного устройства, «не зная» как конкретно оно используется и работает.
Обычно драйвер общается с устройством через шину или коммуникационную подсистему, к которой подключено непосредственное устройство. Когда программа вызывает процедуру (очередность операций) драйвера – он направляет команды на само устройство. Как только устройство выполнило процедуру («рутину»), данные посылаются обратно в драйвер и уже оттуда в ОС.
Любой драйвер является зависимым от самого устройства и специфичен для каждой операционной системы. Обычно драйверы предоставляют схему прерывания для обработки асинхронных процедур в интерфейсе, зависимом от времени ее исполнения.
Любая операционная система обладает «картой устройств» (которую мы видим в диспетчере устройств), для каждого из которых необходим специфический драйвер. Исключения составляют лишь центральный процессор и оперативная память, которой управляет непосредственно ОС. Для всего остального нужен драйвер, который переводит команды операционной системы в последовательность прерываний – пресловутый «двоичный код».
Как работает драйвер и для чего он нужен?
Основное назначение драйвера – это упрощение процесса программирования работы с устройством.
Он служит «переводчиком» между хардовым (железным) интерфейсом и приложениями или операционными системами, которые их используют. Разработчики могут писать, с помощью драйверов, высокоуровневые приложения и программы не вдаваясь в подробности низкоуровневого функционала каждого из необходимых устройств в отдельности.
Как уже упоминалось, драйвер специфичен для каждого устройства. Он «понимает» все операции, которые устройство может выполнять, а также протокол, с помощью которого происходит взаимодействие между софтовой и железной частью. И, естественно, управляется операционной системой, в которой выполняет конкретной приложение либо отдельная функция самой ОС («печать с помощью принтера»).
Если вы хотите отформатировать жесткий диск, то, упрощенно, этот процесс выглядит следующим образом и имеет определенную последовательность: (1) сначала ОС отправляет команду в драйвер устройства используя команду, которую понимает и драйвер, и операционная система. (2) После этого драйвер конкретного устройства переводит команду в формат, который понимает уже только устройство. (3) Жесткий диск форматирует себя, возвращает результат драйверу, который уже впоследствии переводит эту команду на «язык» операционной системы и выдает результат её пользователю (4).
Как создается драйвер устройства
Для каждого устройства существует свой строгий порядок выполнения команд, называемой «инструкцией». Не зная инструкцию к устройству, невозможно написать для него драйвер, так как низкоуровневые машинные команды являются двоичным кодом (прерываниями) которые на выходе отправляют в драйвер результат, полученный в ходе выполнения этой самой инструкции.
При создании драйвера для Линукса, вам необходимо знать не только тип шины и ее адрес, но и схематику самого устройства, а также весь набор электрических прерываний, в ходе исполнения которых устройство отдает результат драйверу.
Написание любого драйвера начинается с его «скелета» — то есть самых основных команд вроде «включения/выключения» и заканчивая специфическими для данного устройства параметрами.
И чем драйвер не является
Часто драйвер устройства сравнивается с другими программами, выполняющими роль «посредника» между софтом и/или железом. Для того, чтобы расставить точки над «i», уточняем:
- Драйвер не является интерпретатором, так как не исполняется напрямую в софтовом слое приложения или операционной системы.
- Драйвер не является компилятором, так как не переводит команды из одного софтового слоя в другой, такой же.
Ну и на правах рекламы – вы всегда знаете, где скачать новейшие драйвера для любых устройств под ОС Windows.
Это системная программа, которая под управлением ОС выполняет все операции с конкретным периферийным устройством.
Перед драйверами стоят две задачи:
1. Обеспечить стандартное обращение к любому устройству, скрывая от остальных частей системы специфические особенности этого устройства.
2. Добиться максимально эффективного использования всех функциональных возможностей конкретных устройств.
В большинстве ОП различают как минимум две разных типа драйверов: для блочных и для символьных устройств. Обращаясь к драйверу, ОС указывает функцию, которую требуется выполнить. Список этих функций общий для драйверов различных устройств, при этом каждый драйвер может реализовать только те функции, которые имеют смысл для данного устройства. Например, для блочных устройств – функция форматирования, для символьных устройств ввода – функция проверки очередного символа без изъятия его из входного потока. Для того что бы учесть все разнообразие возможных операций в число функций драйвера вводят такую операцию, как выполнение специальных функций.
К наиболее важным функциям драйвера относятся следующее:
· Открытие устройства – как минимум при этом увеличивается счетчик текущих обращений к устройствам, что позволяет ставить обращения к устройствам в очередь, если устройство занято.
· Закрытие устройства – обратное «открытию устройства».
· Обработка прерывания – выполняется ввод или вывод очередной порции данных, когда устройство переходит в состояние готовности.
· Опрос устройства – эта функция выполняется для тех устройств, которые не генерируют прерывание.
· Вызов стратегии – это способ выполнения операций ввода-вывода характерные для блочных устройств.
· Выполнение специальных функций –
Типичный драйвер устройство содержит как минимум три основных устройства:
1. Заголовок драйвера – содержит различную информацию о данном драйвере и об управляемом устройстве. Сюда может включаться имя, тип устройства, число однотипных устройств, объем памяти устройства и т.д. Заголовок так же содержит адреса блока стратегии и блока прерывания.
2. Блок стратегии – прием заявок на выполнение операции, введение очереди заявок, а так же запуск операции и ее завершение. Заявка на выполнение операции – стандартная запись, формируемая системой перед обращением драйверов. Она содержит код требуемых функций драйверов. Адрес данных в памяти и на устройстве, объем передаваемых данных. Заявка так же содержит поле, в которое драйвер должен был записать код завершения операции.
3. Блок прерывания – система его вызывает, когда получает сигнал прерывания от устройства. Закончив выполнения заявки, данный блок возвращает управление блоку стратегии для завершения операции.
Помимо трех основных блоков, в разных ОС, драйверы содержат блок инициализации, блок изменения параметров драйверов и т.д.
Усложнение периферийных устройств и самих операционных систем сделала актуальной многоуровневую схему использования драйверов. По этой схеме помимо использования низкоуровневого драйвера аппаратуры допускается еще создание высокоуровневых драйверов лежащих между драйверами аппаратуры и остальной части ОС. Высокоуровневый драйвер получает заявку ОС, преобразуя данные тем или иных образов и, для дальнейшей работы, вызывает низкоуровневый драйвер. Высокоуровневый драйвер не содержит блока прерывания.
Несмотря на стандартизацию структуры, можно выделить несколько спец типов драйверов, отличающихся функциональным назначением.
Ø Драйверы GDI – этот драйвер представляет собой высокоуровневый драйвер графических устройств. Он выполняет трансляцию графических вызовов ОС, преобразуя их в команды, выполняющие соответствующие команды на конкретном устройстве, а затем, выдача этих команд на устройство выполняется уже низкоуровневым драйвером.
Ø Драйверы виртуализации устройств – служат для того, что бы разделять устройства между процессами, создавая иллюзию того, что процесс монопольно владеет устройством. На самом деле драйвер организует очередь заявок о процессах, переключает устройство в нужный для очередного процесса режим.
Драйвер устройства – это системная программа, которая под управлением ОС выполняет все операции с конкретным периферийным устройством. Драйвер является как бы посредником между ОС и устройством. Перед драйверами стоят две одинаково важные, но трудно совместимые задачи:
· обеспечить возможность стандартного обращения к любому устройству, скрывая от остальных частей ОС специфические особенности отдельных устройств;
· добиться максимально эффективного использования всех функциональных возможностей и особенностей конкретных устройств.
Возможность стандартными средствами работать с разными устройствами очень желательна с точки зрения архитектуры ОС и удобства программирования. Было бы крайне противно, если бы при написании прикладной программы нужно было заранее учитывать, какая модель принтера будет использоваться для выдачи результатов. Наоборот, в большинстве случаев прикладной программист даже не должен знать, будет ли это принтер или плоттер-графопостроитель, или же результаты будут отображаться на экране. Большие проблемы могли бы возникнуть и при замене одной модели принтера, диска, монитора на другую, если бы такая замена потребовала переписывать заново все программы, работающие с этим устройством. Другое дело, если все особенности устройства учитываются в одном-единственном месте, а именно – в драйвере этого устройства.
Разумеется, полностью скрыть все различия между устройствами невозможно. Никаким образом нельзя приравнять, скажем, диск к клавиатуре, и даже разные типы дисков похожи, но не совсем. Например, для дискет можно выполнить такую операцию, как проверка смены носителя (фактически при этом проверяется, открывался ли карман дисковода). Для жестких дисков эта операция не имеет смысла.
В большинстве ОС различаются, как минимум, два разных типа драйверов: для символьных и для блочных устройств.
Обращаясь к драйверу, ОС указывает функцию, которую требуется выполнить. Список этих функций общий для драйверов различных устройств, при этом каждый драйвер может реализовать только те функции, которые имеют смысл для данного устройства. Наиболее общими являются функции чтения данных, записи данных, инициализации устройства (эта функция вызывается системой один раз, сразу после загрузки), открытия и закрытия устройства (используются, когда символьное устройство открывается как файл). Для блочных устройств имеют смысл функции форматирования, поиска сектора. Для символьных устройств ввода – функция «неразрушающего ввода», т.е. проверки очередного символа без его изъятия из входного потока.
Для того, чтобы учесть все разнообразие возможных операций, в число функций драйвера вводят такую, как «выполнение специальных функций», и здесь уже для каждого устройства определен свой набор этих специальных функций.
Типичный драйвер устройства содержит, как минимум, три основных блока:
Заголовок содержит различную информацию о данном драйвере и об управляемом устройстве. Сюда может включаться имя устройства, тип устройства, число однотипных устройств, обслуживаемых одним драйвером, объем памяти на устройстве и т.п. Заголовок содержит также адреса блока стратегии и блока прерываний.
В обязанность блока стратегии входит прием заявок на выполнение операции, ведение очереди заявок (в многозадачных системах, а также при асинхронных операциях, выполнения могут дожидаться несколько заявок), а также запуск операции и ее завершение.
Заявка на выполнение операции представляет собой стандартную запись, формируемую системой перед обращением к драйверу. Заявка содержит код требуемой функции драйвера и сведения об адресе данных в памяти и на устройстве, о количестве передаваемых данных. Заявка также содержит поле, в которое драйвер должен будет записать код завершения операции (обычно 0 – нормально выполненная операция, другие значения – коды ошибок).
Блок прерываний выполняет примерно тот алгоритм, который в п. 2.5.1 назывался вводом/выводом по прерываниям. Система вызывает этот блок, когда получает сигнал прерывания от устройства, обслуживаемого драйвером. Закончив выполнение заявки, блок прерываний возвращает управление блоку стратегии для завершения операции.
Помимо трех основных блоков, в разных ОС драйверы могут содержать, например, блок инициализации (он используется один раз при загрузке ОС, а затем может быть выгружен из памяти), блок изменения параметров драйвера и др.
В последние годы возрастающее усложнение периферийных устройств и самих ОС сделало популярной многоуровневую схему использования драйверов. По этой схеме, помимо описанных выше низкоуровневых драйверов аппаратуры, допускается еще создание высокоуровневых драйверов, лежащих между драйверами аппаратуры и остальной частью ОС. Высокоуровневый драйвер не содержит блока прерываний, он принимает заявки от системы, преобразует данные тем или иным образом, а затем вызывает низкоуровневый драйвер для работы с устройством. Например, высокоуровневый графический драйвер может преобразовывать команды рисования фигур, заливок, текста в набор команд конкретной модели принтера, а связанный с ним драйвер параллельного порта отвечает за передачу этих команд принтеру. Для диска можно реализовать в виде отдельного драйвера алгоритм шифрации данных, которые потом передаются обычному драйверу диска.
Сложно дать одно точное определение для драйвера термина. В самом фундаментальном смысле драйвер — это программный компонент, который позволяет операционной системе и устройству взаимодействовать друг с другом.
Например, предположим, что приложению необходимо считывать некоторые данные с устройства. Приложение вызывает функцию, реализованную операционной системой, а операционная система вызывает функцию, реализованную драйвером. Драйвер, написанный той же компанией, которая разработала и произвела устройство, знает, как взаимодействовать с оборудованием устройства для получения данных. После того как драйвер получает данные с устройства, он возвращает данные в операционную систему, которая возвращает его приложению.
Расширение определения
Наше объяснение до сих пор слишком упрощено несколькими способами:
Не все драйверы должны быть написаны компанией, которая разработала устройство.
Во многих случаях устройство разработано в соответствии с опубликованным стандартом оборудования. Это означает, что драйвер может быть написан корпорацией Майкрософт, и конструктор устройств не должен предоставлять драйвер.
Не все драйверы взаимодействуют напрямую с устройством.
Для заданного запроса ввода-вывода (например, для чтения данных с устройства) часто существует несколько драйверов, многоуровневые в стеке драйверов, которые участвуют в запросе. Обычный способ визуализации стека — с первым участником вверху и последним участником внизу, как показано на этой схеме. Некоторые драйверы в стеке могут участвовать, преобразовав запрос из одного формата в другой. Эти драйверы не взаимодействуют напрямую с устройством; они просто управляют запросом и передают запрос вместе с драйверами, которые ниже в стеке.
Драйвер функции: один драйвер в стеке, который напрямую взаимодействует с устройством, называется драйвером функции.
Драйвер фильтра: драйверы, выполняющие вспомогательную обработку, называются драйверами фильтров.
Дополнительные сведения о стеках см. в разделе "Стеки драйверов".
Некоторые драйверы фильтров отслеживают и записывают сведения о запросах ввода-вывода, но не участвуют в них активно. Например, некоторые драйверы фильтров выполняют роль проверяющих, чтобы убедиться, что другие драйверы в стеке правильно обрабатывают запрос ввода-вывода.
Мы могли бы расширить определение драйвера , сказав, что драйвер является любым программным компонентом, который наблюдает или участвует в обмене данными между операционной системой и устройством.
Драйверы программного обеспечения
Расширенное определение является достаточно точным, но по-прежнему неполным, так как некоторые драйверы вообще не связаны с каким-либо аппаратным устройством.
Например, предположим, что необходимо написать средство, которое имеет доступ к основным структурам данных операционной системы, доступ к которым можно получить только с помощью кода, выполняемого в режиме ядра. Это можно сделать, разделив средство на два компонента. Первый компонент выполняется в пользовательском режиме и представляет пользовательский интерфейс. Второй компонент выполняется в режиме ядра и имеет доступ к данным основной операционной системы. Компонент, который выполняется в пользовательском режиме, называется приложением, а компонент, который выполняется в режиме ядра, называется драйвером программного обеспечения. Программный драйвер не связан с аппаратным устройством.
На этой схеме показано приложение в пользовательском режиме, взаимодействующее с драйвером программного обеспечения в режиме ядра.
Драйверы программного обеспечения всегда выполняются в режиме ядра. Основной причиной написания драйвера программного обеспечения является получение доступа к защищенным данным, доступным только в режиме ядра. Однако драйверам устройств не всегда требуется доступ к данным и ресурсам в режиме ядра. Поэтому некоторые драйверы устройств работают в пользовательском режиме.
Дополнительные сведения о режимах процессора см. в разделе "Режим пользователя" и "Режим ядра".
Водители автобуса
Существует категория водителя, который мы еще не упомянули, водитель автобуса. Чтобы понять драйверы шины, необходимо понять узлы устройств и дерево устройств.
Сведения о деревьях устройств, узлах устройств и драйверах шины см. в разделе "Узлы устройств" и "Стеки устройств".
Дополнительные возможности драйверов функций
Наше объяснение до сих пор упрощает определение драйвера функции. Мы сказали, что драйвер функции для устройства является одним драйвером в стеке, который взаимодействует напрямую с устройством. Это верно для устройства, которое подключается непосредственно к шине взаимодействия периферийных компонентов (PCI). Драйвер функции для устройства PCI получает адреса, сопоставленные с ресурсами порта и памяти на устройстве. Драйвер функции напрямую взаимодействует с устройством, записывая их на эти адреса.
Однако во многих случаях устройство не подключается непосредственно к шине PCI. Вместо этого устройство подключается к адаптеру шины узла, подключенного к шине PCI. Например, USB-тостер подключается к адаптеру шины узла (называемому контроллером USB-узла), который подключен к шине PCI. Usb-тостер имеет драйвер функции, а контроллер узла USB также имеет драйвер функции. Драйвер функции для тостера косвенно взаимодействует с тостером, отправив запрос драйверу функции для контроллера узла USB. Драйвер функции для контроллера узла USB затем взаимодействует напрямую с оборудованием контроллера узла USB, который взаимодействует с тостером.
Читайте также: