Краткая история драйверов

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

Первоначально, еще во времена зарождения электронных вычислительных машин, не было особой необходимости в прослойке между «софтом» и «железом», которой, собственно, и является драйвер. Первые предшественники современных драйверов появились в 1950-х и представляли собой библиотеки, через доступ к которым осуществлялись операции ввода-вывода. Зачем они были созданы? Дело в том, что выполнение программ в те времена шло по следующему алгоритму: программист отдавал написанное в вычислительный центр, где его работу ставили в очередь, а потом целый ряд программ запускали друг за другом в рамках одного процесса. Это позволяло сэкономить драгоценное время и эффективней использовать ресурсы, но это же и приводило к тому, что фатальная ошибка в одной программе приводило к краху всей очереди. Таким образом, данные «прото-драйвера» представляли собой максимально отлаженный набор кусков кода, к которым должны были обращаться программисты, не обеспечивая своими собственноручно написанными «велосипедами» дополнительные проблемы и затраты в сотни долларов в час.

История драйверов для компьютеровВремя шло, компьютеры становились все более продвинутыми, а количество периферийных устройств и накопителей информации все росло и росло. К примеру, к мэйнфрейму IBM 1050, выпущенному в 1962 году, мог подключаться целый ворох терминалов самых разных систем, от простейших телетайпов до целых систем связи, ну а информацию он мог хранить как на магнитной ленте, так и на магнитных дисках. Соответственно, возникла проблема стандартизации, и между разработчиками встал вопрос: «Каким образом обеспечить совместимость компьютера и программ не только с нынешними устройствами, но и с теми, которые могут появиться в будущем?» В итоге было принято решение о том, что каждое устройство, подключаемое к этой ЭВМ, должно иметь так называемую «программу адаптера ввода-вывода», которая бы приводила «сырые» данные, получаемые и принимаемые им, в один из двух стандартов. Стандарт «Интерфейс I» был предназначен для устройств, работающих с символьными данными, то есть отдельными буквами, знаками или цифрами; «Интерфейс II» предназначался же для устройств хранения данных, которые работали со словами или кодами. Подобные программы и принято считать первыми в истории драйверами в более или менее классическом понимании этого слова.

Однако давайте выберемся из пыльных вычислительных центров и посмотрим, как обстояли дела у домашних и офисных компьютеров. К тому моменту, а именно к 80-м годам, концепция драйверов уже была отработана и отточена на «больших» компьютерах. Тем не менее, программы для пользовательских ПК, в особенности таких относительно слабых, как Commodore 64 или ZX Spectrum, обходились и без них – это было просто куда более эффективным способом расходовать ограниченные вычислительные мощности. Однако со временем росли и мощности, и количество периферии, и таким образом в них возникла необходимость. Первые драйверы для MS-DOS писались в большинстве своем абсолютно бессистемно и при этом даже не особо использовались программами, которые в большинстве своем предпочитали прямой доступ к устройствам. По настоящему полезными драйверы стали в многозадачных средах, таких как Windows, в которой нельзя было допустить «захват» ресурсов каким-нибудь одним приложением. В не особо популярной и полу-экспериментальной Windows/386 для этого была разработана и внедрена концепция «виртуальных драйверов», которые позволяли ПО работать не с «железом» как таковым, а с его виртуальным аналогом, действия над которым потом транслировались на реальные устройства. Виртуальные драйвера, которые стали популярны с приходом Windows 3.0, в кругах знатоков чаще назывались VxD-драйверами, где “VxD” – это сокращение от “virtual xxx driver”, то есть «виртуальный драйвер чего-то». Такая странная формулировка пошла от названия имен файлов первых виртуальных драйверов; так, к примеру, драйвер джойстика назывался vjoyd.386.

Виртуальные драйвера использовались и в последующих домашних версиях Windows, включая 95 и 98, в то время как предназначенные для сетевых инфраструктур системы Windows NT использовали драйвера своей собственной конструкции. Однако так как со временем начало происходить сближение этих двух линеек систем, которые технически отличались друг от друга практически во всем, появилась необходимость привести все это к чему-то общему. Результатом стало появление в «классической» Windows 98 и в NT-основанной Windows 2000 новой унифицированной модели драйверов – WDM (Windows Driver Model). С тех пор производителям устройств предписывалось создавать драйвера согласно именно этой модели, что позволяло использовать один и тот же набор программ для обеспечения работы периферии под всеми версиями Windows. На практике, впрочем, часто выходило, что старые драйвера хоть и блокировали работу некоторых особых функций системы, таких как спящий режим, но работали все же лучше WDM. Особенно сильно это касалось сетевых устройств, таких как модемы и адаптеры LAN.

Со временем, после закрытия линейки Windows 9x и полного перехода на NT-архитектуру, произошел полный переход на Windows Driver Model. Тем не менее, изменения в структуре ОС, произошедшие в Windows Vista, вынудили разработчиков спроектировать еще одну модель – Windows Driver Foundation, сокращенно WDF. Предназначавшаяся больше в качестве дополнения к предшественнику, чем в качестве замены, она добавляла принципы объектно-ориентированного программирования в написание драйверов. Отныне производители драйверов могут сначала создавать их «по кирпичикам», а затем расширять и дополнять их новыми функциями посредством модулей. Модель была создана с учетом обратной совместимости с системами вплоть до Windows 2000. Это, впрочем, не помогло избежать проблем «переходного периода» – каждый, кто хоть раз ставил драйвера на устройства под «Вистой» или пытался заставить работать сверхновую «железку» под проверенной временем XP, согласится с этим.

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

Источник: ddriver.ru

Оставьте комментарий

Ваш адрес email не будет опубликован. Обязательные поля помечены *