Перенос D-Bus в ядро Linux.
Опубликовано 09.2.2013 16:30 пользователем Peter Lemenkov
Наконец-то началась работа по долгожданному переносу шины сообщений D-Bus в ядро Linux.
Как известно, сейчас на десктопах под управлением Linux работают две популярные шины сообщений - D-Bus и Binder (используется в Linux-дистрибутиве "Android"). В целом, идея о приложениях, связанных посредством некоей шины, обменивающихся сообщениями и посылающим друг другу команды (т.е. не просто шина сообщений, но и RPC), довольно интересна, т.к. позволит изолировать приложения друг от друга. Раньше еще использовали DCOP, от которого отказались в пользу D-Bus, и как занятный курьез можно упомянуть ICE, на базе которого и был построен DCOP, и который является частью X-Window.
К сожалению, как D-Bus, так и Binder критиковали за огрехи в реализации, но, в отличие от D-Bus, Binder есть в ядре, что позволяет использовать его на самой ранней стадии и улучшает производительность. Показательно, конечно, что самая массовая Linux-платформа, т.е. Android, была вынуждена отказаться от D-Bus в том числе и из-за этого. Было предпринято несколько попыток включить D-Bus в ядро, например, в сентябре 2010 (о своей мотивации автор подробно рассказал), но пока без особого успеха. В качестве побочного проекта было решено улучшить UNIX-сокеты, добавив multicast и фильтрование сообщений (одна из последних попыток была предпринята в феврале 2012). Российские Linux-аналитики до сих пор высказывались по поводу проекта с кодовым названием KDBUS сдержанно - ключевыми словами пока являются "ненужно" и "решето". Удивительно, но альянс GENIVI проигнорировал замечания экспертов русскоязычного сообщества и принял новинку с большим энтузиазмом, встроив его в свою платформу.
И вот, за дело наконец-то взялся Greg Kroah-Hartman. Он сообщил, что работает над совершенно новой реализацией шины сообщений в ядре, пока комментаторами названной DBUS 2.0, на базе которой можно будет реализовать и D-Bus, и Binder. Она будет отличаться и от уже существующих реализаций AF_DBUS/AF_BUS-сокетов, так и от Binder. Его начинание уже вызвало положительные отклики от инженеров Google, работающих над Binder, и от команды разработчиков systemd, которые уже планируют включить поддержку новых возможностей ядра. Для legacy-приложений, использующих D-Bus, будет создана библиотека libdbus, для обеспечения совместимости. Само собой, это никак не будет совместимо с устаревшими Unix-системами.
Как известно, сейчас на десктопах под управлением Linux работают две популярные шины сообщений - D-Bus и Binder (используется в Linux-дистрибутиве "Android"). В целом, идея о приложениях, связанных посредством некоей шины, обменивающихся сообщениями и посылающим друг другу команды (т.е. не просто шина сообщений, но и RPC), довольно интересна, т.к. позволит изолировать приложения друг от друга. Раньше еще использовали DCOP, от которого отказались в пользу D-Bus, и как занятный курьез можно упомянуть ICE, на базе которого и был построен DCOP, и который является частью X-Window.
К сожалению, как D-Bus, так и Binder критиковали за огрехи в реализации, но, в отличие от D-Bus, Binder есть в ядре, что позволяет использовать его на самой ранней стадии и улучшает производительность. Показательно, конечно, что самая массовая Linux-платформа, т.е. Android, была вынуждена отказаться от D-Bus в том числе и из-за этого. Было предпринято несколько попыток включить D-Bus в ядро, например, в сентябре 2010 (о своей мотивации автор подробно рассказал), но пока без особого успеха. В качестве побочного проекта было решено улучшить UNIX-сокеты, добавив multicast и фильтрование сообщений (одна из последних попыток была предпринята в феврале 2012). Российские Linux-аналитики до сих пор высказывались по поводу проекта с кодовым названием KDBUS сдержанно - ключевыми словами пока являются "ненужно" и "решето". Удивительно, но альянс GENIVI проигнорировал замечания экспертов русскоязычного сообщества и принял новинку с большим энтузиазмом, встроив его в свою платформу.
И вот, за дело наконец-то взялся Greg Kroah-Hartman. Он сообщил, что работает над совершенно новой реализацией шины сообщений в ядре, пока комментаторами названной DBUS 2.0, на базе которой можно будет реализовать и D-Bus, и Binder. Она будет отличаться и от уже существующих реализаций AF_DBUS/AF_BUS-сокетов, так и от Binder. Его начинание уже вызвало положительные отклики от инженеров Google, работающих над Binder, и от команды разработчиков systemd, которые уже планируют включить поддержку новых возможностей ядра. Для legacy-приложений, использующих D-Bus, будет создана библиотека libdbus, для обеспечения совместимости. Само собой, это никак не будет совместимо с устаревшими Unix-системами.