Унифицированный интерфейс драйвера

Унифицированный интерфейс драйвера (англ. Uniform Driver Interface, UDI) — снятый с поддержки проект, инициированный в 1998 году компанией Intel при поддержке Compaq, HP, IBM и Sun для высокопроизводительных серверов с целью определения переносимого интерфейса для драйверов устройств[1].

Описание

Унифицированный интерфейс драйвера (UDI) позволял обеспечивать переносимость драйверов устройств между различными аппаратными платформами и операционными системами без необходимости в изменении исходного кода драйвера. Благодаря участию множества производителей операционных систем, платформ и аппаратных средств, проект UDI претендовал на роль первого интерфейса, способного обеспечить такую масштабную портируемость. UDI предоставлял инкапсулирующую среду с чётко определёнными интерфейсами, изолировав драйверы от политик ОС и зависимостей от платформы и шин ввода-вывода. В принципе, это позволяло разрабатывать драйверы совершенно независимо от разработки операционной системы. Кроме того, архитектура UDI была призвана избавить драйверы от специфики платформы, такой как порядок байтов, особенности прямого доступа к памяти (DMA), поддержки многопроцессорности, реализации прерываний и топологии шин ввода-вывода[2].[3][4] В основе UDI лежат несколько ключевых технических принципов. Базовые спецификации обеспечивают полную переносимость на уровне исходного кода[2][5], а спецификации бинарных привязок гарантируют бинарную совместимость в пределах одной процессорной архитектуры[5]. Драйверы проектируются с использованием неявной синхронизации, что делает их потокобезопасными без применения явных блокировок[2]. Кроме того, архитектура обеспечивает независимость от расположения, поддерживая «горячую» замену устройств и работу в распределённых средах[2]. Механизм независимости от шин реализуется через абстракцию физического ввода-вывода, скрывающую низкоуровневые детали оборудования[2][3]. Для взаимодействия между программными модулями в UDI используется концепция «мета-языков». Они задают стандартизированную парадигму коммуникации для каждого класса устройств, строго определяя типы каналов связи, абстрактные операции и структуру управляющих блоков[2].

Сравнение с I2O

Проекты UDI и I2O имеют общую цель — создание стандартизированных независимых от операционных систем интерфейсов для драйверов устройств, однако они фокусируются на разных аспектах. UDI сосредоточен на независимости от операционных систем для хост-процессоров, тогда как I2O фокусируется на интеллектуальных архитектурах ввода-вывода и вопросах запуска драйверов на процессорах ввода-вывода (IOP). Эти проекты могут дополнять друг друга: например, через использование специальных UDI-мапперов, преобразующих запросы в сообщения I2O, или посредством реализации среды UDI непосредственно на IOP, что позволяет одним и тем же драйверам работать как на хост-процессоре, так и на процессоре ввода-вывода[6].

Критика

Хотя UDI потенциально мог быть полезен открытым операционным системам, таким как Linux и *BSD, давая возможность получать больше драйверов от производителей, некоторые сторонники открытого программного обеспечения и свободного ПО опасались, что UDI приведёт к распространению закрытых драйверов и сокращению поддержки открытого кода со стороны производителей, что подорвёт цель движений свободного и открытого ПО. Ричард Столлман (лидер движения за свободное ПО) утверждал, что этот проект не приносит пользы движению за свободное ПО[7].

Примечания

  1. История проекта UDI. Open-Life.org. Дата обращения: 26 августа 2026.
  2. 1 2 3 4 5 6 UDI Architecture Overview (PDF). udi.certek.com. Дата обращения: 26 августа 2026.
  3. 1 2 Project UDI. projectudi.org. Дата обращения: 26 августа 2026.
  4. Project UDI. udi.certek.com. Дата обращения: 26 августа 2026.
  5. 1 2 UDI ABI Introduction. uw714doc.xinuos.com. Дата обращения: 26 августа 2026.
  6. UDI and I2O. UDI Project. Дата обращения: 26 августа 2026.
  7. UDI and I2O. udi.certek.com. Дата обращения: 26 августа 2026. Архивировано 22 мая 2025 года.

Литература

Ссылки

Категории