3

Недавно я переустановил ОС на моем компьютере, и мне пришлось установить несколько драйверов, чтобы все заработало. Это заставило меня задуматься, что такое драйвер, как он работает? И есть ли разница между, например, драйвером принтера и драйвером графической карты?

3 ответа3

3

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

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

Этот "код перевода" является драйвером.

Разница между графическим драйвером и драйвером принтера заключается в том, что драйвер принтера взаимодействует с API печати, а графический интерфейс взаимодействует с графическим API.

2

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

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

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

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

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

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

Теперь это упрощенный вид, но, надеюсь, даст вам хорошую идею.

1

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

Всё ещё ищете ответ? Посмотрите другие вопросы с метками .