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