Open SourceА где Uniform Driver Interface?

Решил задать этот вопрос здесь, т.к. ничего нового в гугле не нашел… а тут может быть кто-то отслеживает ситуацию. Cлышал ли кто-нибудь, что-нибудь о создании единого интерфейса драйверов для разных ОС? Ну или хотя бы что-нибудь подобного? Интересуют меня, в первую очередь, свободные ОС и, соответственно, открытые драйвера. Для тех, кто считает, что это даже теоретически нереально, расскажу про Project UDI.

Итак, в начале 1998 года компания Intel инициировала разработку UDI (Uniform Driver Interface). Цель этой инициативы — проектирование стандартного интерфейса драйверов устройств для высокопроизводительных серверов. Катализатором для ускорения этого проекта стал, планировавшийся на 1999 год, выпуск Itanium'а. А вернее, желание Intel видеть единый драйвер устройств для всех UNIX'ов, которые планировалось использовать на Itanium'ах.

Проект создания унифицированного интерфейса драйверов поддержали как компании, выпускающими операционные системы (Compaq/Digital, Hewlett-Packard, IBM, Santa Cruz Operation и Sun Microsystems), так и разработчики оборудования (Adaptec, Bit3 и Interphase). Свое одобрение высказали и некоторые разработчики Linux, но FSF выступил с критикой (что естественно).

Первые результаты работы над UDI были представлены уже в том же году:
В первой публичной демонстрации драйвер работал под управлением ОС SCO UnixWare 2, UnixWare 7 и Hewlett-Packard HP-UX. Это было реализовано путем перекомпиляции идентичного исходного кода. Данный драйвер был также протестирован при работе под Compaq Digital UNIX, IBM AIX и Sun Solaris на широком диапазоне процессоров, включая Intel IA32 (x86), Alpha, PA-RISC, PowerPC и др. Тесты показали совместимость драйвера и с 64- и с 32-разрядными процессорами, поддержку адаптеров SCSI Host Bus Adapters и сетевых интерфейсных плат.
Ну а дальше, все это заглохло.

А идея то была не плохая, вот бы её «воскресить», но уже в современных условиях и для свободных ОС. Проблема вот в чем. Сегодня Linux набрал уже неплохую базу Open Source драйверов (и эта база, неминуемо, будет продолжать рости), но линукс это не единственная свободная ОС. Было бы здорово, если бы существовал какой-то простой механизм портирования этих драйверов на другие системы. Я понимаю, что когда дело касается UNIX-подобных систем, то там этот вопрос можно решить в какой-то степени, но что делать, если архитектура ядра совершенно другая/новая?

И тем не менее, я считаю, что эта идея осуществима. Идеальная ситуация, которую я вижу — написать некий стандарт единого интерфейса с обязательным требованием предоставления кода на условиях (L)GPL. При таком раскладе мы получим целый ряд преимуществ:
— Скомпилировать такой драйвер можно будет практически под любую архитектуру железа и ОС.
— Производителям hardware не придется думать о том, ка бы не отвалилось что-то в новой версии ядра.
— Снимается проблема пользователей наличия драйверов для различных ОС.
— Все это послужит дополнительным стимулом к открытию драйверов и распространению СПО.

Вот такая вот мечта… К сожаление, ничего ближе к вышеописанной идеи, чем «Partner Linux Driver Process» от Novell я не нашел. :-( Так может быть я просто не там и не то ищу?

ps: Более подробную информацию об UDI можно почитать на www.projectudi.org/ и projectudi.sourceforge.net
  • +3
  • fog
  • 19 июля 2009, 14:01

Комментарии (1)

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