double arrow

Интерфейс внешних устройств. Драйверы

Интерфейс прикладных программ

Интерфейс прикладных программ (API – Application Programming Interface) – часть ОС, через которую происходит взаимодействие ОС с приложениями, решающими задачи пользователя. API – это набор средств (обычно – процедур и функций), входящих в состав ОС, который может использоваться любой прикладной программой для обеспечения взаимодействия ее с ядром ОС, внешними устройствами и пользователем. Обычно в API входят средства, обеспечивающие выделение ресурсов, работу с файловой системой, взаимодействие с пользователем и управление работой самой ОС. Физически API обычно представляет собой одну или несколько общедоступных библиотек процедур, каждая из которых является частью ОС и может быть вызвана любой программой, выполняющейся под управлением этой ОС. Конкретный механизм вызова процедур API зависит от типа ОС.

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

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

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

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

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

ОС имеет строго заданный стандарт на перечень функций, которые должно выполнять устройство того или иного типа и на порядок взаимодействия с таким ВУ (то есть обобщенные интерфейс ВУ данного типа). Фактически, этот интерфейс описывает некоторое виртуальное устройство, с которым и работает ядро системы.

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

Более того, некоторые функции, поддерживаемые драйвером, устройство может вообще не реализовать аппаратно. Если, в соответствии с протоколом, в данной ОС устройство данного типа обязано реализовать данную функцию, то эта функция может быть реализована не самим устройством, а его драйвером. Впрочем, и такое поведение драйвера вовсе не обязательно. Часто бывает, что ряд функций ВУ считается необязательным. Для таких функций предусматриваются средства проверки, с помощью которых обращаются к драйверу программа (или ядро ОС) могут определить поддерживается ли определенная функция. Если необходимая функция поддерживается, она используется, а если нет, то программа должна самостоятельно решить эту проблему.

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


Понравилась статья? Добавь ее в закладку (CTRL+D) и не забудь поделиться с друзьями:  



Сейчас читают про: