Различия между kdbus и Binder
Опубликовано 16.1.2014 11:00 пользователем Peter Lemenkov
Известный гентушник и дистрохоппер Greg Kroah-Hartman попробовал объяснить, почему Binder, использующийся в Android вероятно никогда не будет заменен kdbus. В статье, написанной им с помощью Kay Sievers и Lennart Poettering, он упрощает различия до двух - D-Bus требует память, а Binder целиком полагается на CPU. Грубо говоря, Binder, это синхронная система распределенных блокирующих вызовов и посылок сообщений, не хранящая их, а сразу доставляющая адресату наподобие той, что должна присутствовать в любом микроядре (аналог gen_server:call/2 в Erlang). А вот D-Bus, как раз наоборот, асинхронная неблокирующая шина данных, накапливающая сообщения в памяти (очень приблизительный аналог gen_server:cast/2 в Erlang).
Перенести Binder на использование kdbus теоретически можно, просто добавив блокирующие ioctl для kdbus, но Binder разрабатывает счетное по пальцам одной руки количество программистов, и вряд-ли у них есть возможность тестировать все заново, учитывая, что Binder уже давно отлаженно и хорошо работает.
Заметку уже обсуждают в ленте G+ автора.
Перенести Binder на использование kdbus теоретически можно, просто добавив блокирующие ioctl для kdbus, но Binder разрабатывает счетное по пальцам одной руки количество программистов, и вряд-ли у них есть возможность тестировать все заново, учитывая, что Binder уже давно отлаженно и хорошо работает.
Заметку уже обсуждают в ленте G+ автора.