воскресенье, 17 октября 2010 г.

1.1. Роль драйверов устройств

Как программист, вы постоянно должны делать собственный выбор драйвера, и выбрать приемлемый вариант между временем отведенного на программирование и гибкостью результата. Хотя это может показаться странным говорить что драйвер «гибкий», мы выбрали это слово потому что придаем ему особое значение так как драйвер устройства представляет собой механизм, а не политику.
Различие между механизмом и политикой одна из лучших идей после проекта Unix. Большинство проблем программирования на самом деле идут на компромисс между двумя частями: «какие представлены возможности» (механизм) и «как могут быть использованы возможности пользователем» (политика). Если есть два подхода обращенные к разным частям программы или даже различным программам взятым вместе, тогда программный пакет намного проще совершенствовать и применять в практических целях.
На пример, управление Unix графическим дисплеем разделяются между Х-сервером, который знаком с аппаратным обеспечением и поддерживает единый интерфейс пользователя программ, а также окна и менеджеры сессий, которые осуществляют особенную политику не зная ничего о аппаратном обеспечении. Люди могут использовать один и тот же оконный менеджер на разном аппаратном обеспечении, и различные пользователи могут запускать различные конфигурации на  одной и той же рабочей станции.  Даже совершенно разное рабочее окружение, такие как KDE и GNOME, могут сосуществовать в одной и той же системе. Другой пример — структурная расслоение сетевого протокола TCP/IP: операционная система предлагает сокетную абстракцию, которая выполняет без установки рассмотрение переданных данных, в то время как различные серверы управляют сервисами (и их ассоциированными политиками). Более того, сервер такой как ftpd  обеспечивает механизм перемещения файлов, тогда когда пользователь может использовать все что предпочтут его клиенты, и командная строка и графический клиенты сосуществуют и любой может написать новый интерфейс для перемещения файлов.
Драйверы связанны между собой, одинаково разделенные механизмы и применяемой политике. Пассивный драйвер это свободная политика его роль только показать дискету как продолжающейся массив блока данных. Более высокий уровень системы обеспечивают политики, такие как кто может иметь доступ к флоппи диску, либо диск доступен напрямую через файловую систему, а также либо пользователь может монтировать файловую систему на диске. С тех пор как различные окружения обычно требуются для использования аппаратного обеспечения различными путями, важно чтобы политика была свободной на столько насколько это возможно.
Когда пишутся драйвера, программист  с особенным вниманием должен относиться к этим фундаментальным основам: писать код ядра для доступа к аппаратному обеспечению, но не должен навязывать какую-нибудь особенную политику для пользователя, так как у разных пользователей разные потребности. При создании драйвера необходимо иметь дело с имеющимся аппаратным обеспечением, используя все подходы использования аппаратного обеспечения в приложениях. Драйвер, тогда, гибкий когда предоставляет доступ к возможностям аппаратного обеспечения без особых проблем. Иногда, тем не менее, некоторые политики должна быть реализованы. На пример, цифровой драйвер ввода\вывода может только предложить битово-широкий доступ к аппаратному обеспечению в порядке избегая дополнительного кода необходимого для управления единичными битами.
На драйвер можно смотреть с разных точек зрения: это слой программного обеспечения который лежит между приложениями и подлинным устройством.  Эта преимущественная роль драйверов позволяет программистам выбирать как устройство будет представлено: различные драйвера могут  предложить различные возможности, даже для одного и того же устройства. Целью современного драйвера должен быть баланс между многими различными точками зрения. Для примера, отдельное устройство может быть использовано совместно различными программами и программисты драйверов имеют полную свободу определяя как поддерживать эти соглашения. Вы можете осуществлять отображение памяти на устройстве независимо от возможностей аппаратного обеспечения или можете  обеспечивать пользовательскую библиотеку для помощи программистам приложений осуществляя новые политики на вершине доступных примитивов и так далее и тому подобное. Одно из главных соображений при продаже драйвера: приходится выбирать между сильным желанием представить пользователю как можно больше возможностей, и временем отведенным на его написание, также требуется сохранить простоту чтобы не запутать пользователя.
Свободная политика драйверов имеют несколько типов характеристик. Они включают в себя поддержку и синхронных, и асинхронных операций, способность открывать множественные времена, способность использовать все возможности аппаратного обеспечения, и недостаток слоя программного обеспечения «упрощенные случаи» или предоставлять политически связанные операции. Драйверы этого типа не только работают лучше для  конечных пользователей, но также оказывается проще для написания а также поддержки (сопровождения). Существование свободной политики фактически общая цель для проектировщиков программного обеспечения.
Многие драйвера устройств, на самом деле, выпущенные вместе с пользовательскими программами позволяют задать конфигурацию устройства и обеспечивают доступ к нему. Эти программы могут выстраивать как ряд из простых утилит образуя целое графическое приложение. Примеры включающие программу tunelp, которые регулируют как работает драйвер параллельного порта принтера и графическая утилита cardctl, которая является частью пакета драйверов PCMCIA. Часто и клиентские библиотеки обеспечивают это, которые обеспечивают такие возможности что нет необходимости осуществлять их как часть драйвера.
В рамках этой книги ядро, так мы попытались не вести дело с политикой результатов или с программными приложениями или поддерживать библиотеки. Иногда мы говорим о различных политиках и как поддерживать их, но мы не хотели вдаваться в подробности о программах использующих устройства или навязывать их политики. Вы должны понять, тем не менее, что пользовательские программы существенная часть программных пакетов и что  свободная политика пакетов поставляемых с конфигурационными файлами допускает недосмотр режима лежащего в основе механизма.

Комментариев нет:

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

Примечание. Отправлять комментарии могут только участники этого блога.