Грег Кроа-Хартман (Greg Kroah-Hartman) представил для включения в ядро Linux второй вариант патчей с реализацией kdbus, надёжной, быстрой и безопасной системы обмена сообщениями, поддерживающей доставку сообщений как в мультикаст-режиме (от одного отправителя к группе получателей), так и в режиме точка-точка. Kdbus может использоваться как обособленно, например, данная система уже поддерживается в systemd, так и для создания реализации D-Bus, не требующей запуска отдельного демона в пространстве пользователя.

Вторая версия патчей примечательна значительной переработкой кода и некоторыми существенными изменениями в реализации. Например, в качестве интерфейса для обращения к kdbus вместо устройства /dev/kdbus предложена новая псевдофайловая система kdbusfs, по умолчанию монтируемая как /sys/fs/kdbus. Кроме того, в новом выпуске изменена логика прикрепления метаданных, обеспечена привязка пространств имён, добавлены новый объект kdbus_node и флаг _KDBUS_ATTACH_ANY, проведены оптимизации производительности.

Из основных достоинств реализации шины kdbus на уровне ядра отмечается:

  • Высокая производительность за счёт минимизации переключения контекста процессов, меньшего выполнения операций копирования, сокращения системных вызовов, использования memfd;
  • Высокая безопасность из-за исключения влияния пользовательских процессов на содержимое шины и использования механизмов ядра для управления передачей данных, в том числе с возможностью контроля со стороны модулей LSM;
  • К сообщениям может быть прикреплено больше метаданных;
  • Пригодность для приложений, обрабатывающих большие потоки данных, с возможностью расстановки сообщений в очереди на основании приоритетов и задания глобального упорядочивания сообщений. Например, некоторые разработчики нашли применение в kdbus даже для передачи звука в системе;
  • Неподверженность многим состояниям гонки, которые трудно устранить в реализации на уровне пользователя. Например, ситуация отсоединения клиента от шины только при условии отсутствия сообщений в его очереди;
  • Возможность мониторинга на уровне ядра. Привилегированные пользователи могут подключить к потоку сообщений без создания специализированных механизмов в пространстве пользователя;
  • Возможность прямой доставки сообщения без помещения в очередь, что удобно при организации обработки запросов активации по шине;
  • Возможность раннего доступа к шине, на этапе выполнения initrd.


Источник: http://www.opennet.ru/opennews/art.shtml?num=41106