SlideShare una empresa de Scribd logo
1 de 21
D-BUS
Introducción
Javier Martínez de Pissón Caruncho
Dani Gutiérrez
2
Licencia
●
Creative Commons:
●
Reconocimiento – Compartir por igual (by-sa):
–
Se permite el uso comercial de la obra y de las
posibles obras derivadas, la distribución de las
cuales se debe hacer con una licencia igual a la
que regula la obra original
3
Índice
1.Introducción
2.Fundamentos de D-BUS. Diseño y Conceptos
3.Programación de D-BUS. Bindings
4.Estado actual. Usos y Futuro
5.Referencias
4
Introducción
Los mecanismos IPC clásicos de UNIX
se han quedado anticuados para las
necesidades actuales de Linux
●
Las aplicaciones necesitan conectividad+facilidades de programación
●
Cada escritorio tiene sus propios mecanismo RPC, que al igual que los IPC, se ven anticuados
●
La comunidad FreeDesktop diseñó D-BUS con el objetivo de tener un mecanismo IPC ligero y
rápido, que además unifique los mecanismos RPC de los escritorios libres.
5
Introducción
D-BUS es un mecanismo IPC moderno
●
Los mecanismos IPC clásicos se basan en el intercambio
de flujos de bits entre distintos procesos
●
D-BUS, por el contrario, implementa un protocolo de
comunicación
–
Orientado a conexión y con estado, pero no transaccional
–
Mensajes discretos formateados
–
Bus compartido de comunicación
6
Introducción
D-BUS se caracteriza por dirigirse a 3
usos fundamentales
●
Comunicación entre procesos de la misma máquina (intercambio de mensajes)
–
Implementa una comunicación IPC sencilla, similar a la clásica de UNIX
●
Llamadas a métodos de objetos de procesos de la misma máquina
–
D-BUS se orienta a objetos; cada proceso es un objeto con su nombre y dirección
correspondientes
–
De manera similar a los mecanismos RPC, un proceso puede descubrir y llamar a
métodos de otros procesos
●
Comunicación del sistema
–
El bus se divide en dos:
●
Bus de espacio de usuario, único para cada sesión
●
Bus del sistema; se usa para la comunicación de aplicaciones con la capa del
kernel
–
Puede realizarse una comunicación directa entre ambos buses (kernel y aplicaciones
del sistema)
7
Fundamentos de D-BUS.
Esquema general
8
Fundamentos de D-BUS.
Conceptos. Bus
El funcionamiento de D-BUS se orienta alrededor de
la creación de un bus unificado y compartido por
los procesos que necesitan comunicación
●
Existen 2 modalidades de uso del bus a los que un proceso, denominado
cliente, puede conectarse:
–
Bus punto a punto:
●
Funcionalidad IPC clásica
●
2 procesos se conectan entre sí y se comunican a través del
bus creado por uno de ellos.
●
Se implementa a través de la librería dbus (no hace falta el
daemon)
–
Bus multipunto:
●
Comunicación multiproceso; permite tener arquitecturas entre
procesos del tipo publish-subscribe o cliente-servidor
●
Se implementa a través del dbus daemon + librería dbus
–
9
Fundamentos de D-BUS.
Conceptos. Bus
El funcionamiento de D-BUS se orienta alrededor de
la creación de un bus unificado y compartido por
los procesos que necesitan comunicación
●
Varios buses pueden estar activos en un sistema. En general se tienen siempre dos
buses activos en cada momento:
–
Bus de sistema:
●
Comunicación del sistema con aplicaciones de usuario mediante el Kernel
Event Layer
●
Ej: Notificaciones de hardware
●
Nombre del proceso: dbus-daemon --system
–
Bus de sesión
●
Comunicaciones IPC de propósito general
●
Ej: Notificaciones de aplicaciones
●
Nombre del proceso: dbus-daemon –session
–
10
Fundamentos de D-BUS.
Conceptos. Object Model
D-BUS se comporta como un mecanismo RPC. Por
tanto, la programación se orienta a objetos.
●
En D-BUS un objeto es cualquier punto que forma parte de una
comunicación; un objeto es un “recurso” expuesto por un proceso
–
Un proceso puede usar remotamente objetos de otros procesos
–
Todos los procesos conectados tienen al menos un objeto, que es el propio bus
●
Los objetos se gestionan mediante métodos y señales
●
Los objetos puede transmitir 3 tipos de mensajes:
–
Request: Peticiones a objetos desde un proceso (ligado a métodos)
–
Reply: Respuestas de los objetos a un proceso (ligado a métodos)
–
Broadcast: Difusión a todos los clientes del bus (ligado a señales)
●
La comunicación establecida puede ser por tanto del tipo 1:1 o 1:N
11
Fundamentos de D-BUS.
Conceptos. Object Model
D-BUS se comporta como un mecanismo RPC. Los
objetos pueden llamar a métodos de otros objetos
●
Un objeto puede mandar un request invocando un
método de otro objeto
–
El mensaje debe incluir los parámetros de entrada de la
función
●
La respuesta puede ser de 2 tipos:
–
Exception
●
Devuelve el nombre del error(o errores) y el mensaje
correspondiente
–
Reply
●
Devuelve los parámetros de salida de la función invocada
12
Fundamentos de D-BUS.
Conceptos. Object Model
D-BUS se comporta como un mecanismo RPC. Los
objetos pueden llamar a métodos de otros objetos
●
La llamada puede realizarse de dos formas:
–
Llamada asíncrona:
●
No bloquea al proceso
●
Necesario una función de callback
–
Llamada síncrona
●
Bloquea al proceso
●
Nuevos mensajes se encolan hasta el desbloqueo
●
Marshalling
–
Las implementaciones de alto nivel de D-BUS encapsulan el mecanismo
RPC
–
Un programador invoca llamadas de otros procesos como si estuvieran en el
propio
●
Se obtiene una “copia” de un objeto que existe en otro proceso, y se usa como si
estuviera instanciado en el propio código
13
Fundamentos de D-BUS.
Conceptos. Object Model
D-BUS, además de llamadas a
métodos, permite el envío de señales
●
Las señales en D-BUS son una forma de comunicación símplex de
un objeto a múltiples destinos.
–
No esperan respuesta
–
A diferencia de las llamadas, admiten parámetros pero no se distingue
entre parámetros de entrada o de salida
–
Un proceso debe registrar explícitamente qué señales quiere “escuchar”
●
Los procesos pueden esperar o no la señal. En cualquier caso,
pueden:
–
Ignorar la señal
–
Atender la señal
●
Es interesante registrar únicamente aquellas señales que se van a atender
–
14
Fundamentos de D-BUS.
Conceptos. Object Model
Los métodos y señales de un objeto se denominan miembros. Todos
los miembros expuestos de un objeto se definen en la interfaz
●
Las interfaces cumplen la misma función que en Java.
–
Si un objeto implementa una interfaz significa que el objeto tiene
definidos todos los miembros de la interfaz, incluidos tanto los métodos
expuestos como las señales que puede emitir
–
El objeto admite llamadas a los miembros de su interfaz
●
Se representan mediante los nombres de interfaz
–
Ejemplo: org.freedesktop.DBus.ObjectManager
–
15
Fundamentos de D-BUS.
Conceptos. Direccionamiento
Todo elemento en D-BUS tiene una dirección única
y varios nombres con los que se puede acceder al
mismo
–
Un...Un... IdentificadoIdentificado
porpor
Tiene el aspectoTiene el aspecto Y es elegidoY es elegido
porpor
Bus Address unix:path=/var/run/dbus/system_bus_socket La
configuración
del sistema
Conexión Bus name :34-907 (unique)
com.mycompany.TextEditor (well-known)
D-BUS
(unique) o el
programa
(well-known)
Objeto Path /com/mycompany/TextFileManager El programa
Interfaz Interface name Org.freedesktop.Hal.Manager El programa
Miembro Member name ListNames El programa
16
Fundamentos de D-BUS.
Conceptos. Direccionamiento
●
El bus daemon:
–
Tiene una dirección y nombre únicos
–
La librería dbus encapsula el proceso de conexión; el
proceso cliente se abstrae del bus; solo debe abrir y usar una
conexión al mismo
●
Los procesos cliente manejan conexiones al bus
–
Cada conexión tiene un nombre único que hace las veces de
dirección al bus
●
Los nombres son únicos mientras el bus exista (unique)
●
Existen nombres reservados para los servicios Well-Known
–
17
Fundamentos de D-BUS.
Conceptos. Direccionamiento
●
Se accede a un objeto mediante su dirección
–
La dirección recibe el nombre de path por su parecido al path de
UNIX
●
La llamada a un miembro se realiza mediante el nombre
del mismo
●
Ejemplo:
–
Estándar de notificaciones de D-BUS
–
Se representa mediante el objeto /org/freedesktop/Notifications
–
Implementa la interfaz org.freedesktop.Notifications
–
Para lanzar una notificación, se llama al miembro Notify
–
–
18
Programación de D-BUS
Bindings
La API provee dos maneras de implementar D-BUS
en una aplicación
●
Implementación de bajo nivel
●
Librería escrita en C
●
No es recomendable a la hora de programar una aplicación; como todo bajo
nivel, puede resultar difícil y propenso a errores,
●
Su objetivo es programar nuevas APIs de alto nivel
●
Implementación de alto nivel
●
Se basa en librerías conocidas como bindings
●
Un binding en programación consiste en el mapeo de un objeto hacia una interfaz
y viceversa. En D-BUS se denomina bindings a las librerías wrapper que
permiten el uso de D-BUS mediante lenguajes de programación distintos a C.
●
Cada binding proporciona una API; existen multitud de bindings para numerosos
lenguajes de programación, siendo los más importantes y soportados:
–
GDBus: Wrapper orientado a la programación mediante las bibliotecas GLib
–
Qt4: La bilbioteca Qt incluye desde su versión 4 una librería destinada a D-Bus
–
Java Dbus: Wrapper escrito en Java
–
Python: Wrapper escrito en Python
●
19
Estado actual
Usos
●
Numerosas aplicaciones utilizan la
librería dbus
–
Sistemas de notificaciones de escritorio
●
Cinnamon, Gnome, …
–
Aplicaciones multimedia
●
Control reproductor LastFm, Banshee
–
Sistemas de mensajería
●
Pidgin
20
Estado actual
Futuro: kdbus
●
La idea es que el mensaje se transmita
directamente entre dos procesos, despertando
únicamente al dbus-daemon para la conexión
inicial
–
Nuevo tipo de socket AF_DBUS
–
El cambio únicamente implica reescribir la librería
dbus, lo que permite compatibilidad con las
aplicaciones actuales
●
Mayor rendimiento y velocidad
Actualmente kdbus se encuentra en desarrollo.
El objetivo del proyecto es llevar el mecanismo
dbus al kernel
21
Referencias
●
FreeDesktop: D-BUS Wiki
http://www.freedesktop.org/wiki/So
●
Linux Journal: Get on the D-
BUS
http://www.linuxjournal.com/article

Más contenido relacionado

La actualidad más candente

COMUNICACIÓN DISTRIBUIDA
COMUNICACIÓN DISTRIBUIDACOMUNICACIÓN DISTRIBUIDA
COMUNICACIÓN DISTRIBUIDADiana
 
Presentaciones ruby
Presentaciones rubyPresentaciones ruby
Presentaciones rubyPedro1808
 
Presentación Ruby on Rails
Presentación Ruby on RailsPresentación Ruby on Rails
Presentación Ruby on RailsGiannis Morales
 
Curso: Iniciación a la robótica con RaspberryPi y ROS (Info)
Curso: Iniciación a la robótica con RaspberryPi y ROS (Info)Curso: Iniciación a la robótica con RaspberryPi y ROS (Info)
Curso: Iniciación a la robótica con RaspberryPi y ROS (Info)Bernardo Ronquillo Japón
 
Compiladores unidad1
Compiladores unidad1Compiladores unidad1
Compiladores unidad1X3025990
 
Protocolos y tecnologias web
Protocolos y tecnologias webProtocolos y tecnologias web
Protocolos y tecnologias webRaul Hernandez
 
Ejercicios de test - desarrollo y programación
Ejercicios de test  -  desarrollo y programaciónEjercicios de test  -  desarrollo y programación
Ejercicios de test - desarrollo y programaciónoposicionestic
 
Presentacion de ruby
Presentacion de rubyPresentacion de ruby
Presentacion de rubyKarlytozdj
 
INTRODUCCION A LOS LENGUAJES DE PROGRAMACION
INTRODUCCION A LOS LENGUAJES DE PROGRAMACIONINTRODUCCION A LOS LENGUAJES DE PROGRAMACION
INTRODUCCION A LOS LENGUAJES DE PROGRAMACIONluisana08
 
Fund progbd 3_u1_lenguajeprogramacionjava1
Fund progbd 3_u1_lenguajeprogramacionjava1Fund progbd 3_u1_lenguajeprogramacionjava1
Fund progbd 3_u1_lenguajeprogramacionjava1armando_cardenas
 

La actualidad más candente (19)

COMUNICACIÓN DISTRIBUIDA
COMUNICACIÓN DISTRIBUIDACOMUNICACIÓN DISTRIBUIDA
COMUNICACIÓN DISTRIBUIDA
 
Presentaciones ruby
Presentaciones rubyPresentaciones ruby
Presentaciones ruby
 
Lenguaje de Programación Ruby
Lenguaje de Programación RubyLenguaje de Programación Ruby
Lenguaje de Programación Ruby
 
Presentación Ruby on Rails
Presentación Ruby on RailsPresentación Ruby on Rails
Presentación Ruby on Rails
 
Java vs. Ruby
Java vs. RubyJava vs. Ruby
Java vs. Ruby
 
Curso: Iniciación a la robótica con RaspberryPi y ROS (Info)
Curso: Iniciación a la robótica con RaspberryPi y ROS (Info)Curso: Iniciación a la robótica con RaspberryPi y ROS (Info)
Curso: Iniciación a la robótica con RaspberryPi y ROS (Info)
 
Sockets y servidores
Sockets y servidoresSockets y servidores
Sockets y servidores
 
Lenguaje de programación Ruby
Lenguaje de programación RubyLenguaje de programación Ruby
Lenguaje de programación Ruby
 
Lenguaje de programacion ruby
Lenguaje de programacion rubyLenguaje de programacion ruby
Lenguaje de programacion ruby
 
Compiladores unidad1
Compiladores unidad1Compiladores unidad1
Compiladores unidad1
 
Protocolos y tecnologias web
Protocolos y tecnologias webProtocolos y tecnologias web
Protocolos y tecnologias web
 
Ejercicios de test - desarrollo y programación
Ejercicios de test  -  desarrollo y programaciónEjercicios de test  -  desarrollo y programación
Ejercicios de test - desarrollo y programación
 
Ajax y Jquery
Ajax y JqueryAjax y Jquery
Ajax y Jquery
 
Presentacion de ruby
Presentacion de rubyPresentacion de ruby
Presentacion de ruby
 
Sockets java
Sockets javaSockets java
Sockets java
 
INTRODUCCION A LOS LENGUAJES DE PROGRAMACION
INTRODUCCION A LOS LENGUAJES DE PROGRAMACIONINTRODUCCION A LOS LENGUAJES DE PROGRAMACION
INTRODUCCION A LOS LENGUAJES DE PROGRAMACION
 
Script Linux
Script LinuxScript Linux
Script Linux
 
Sistemas operativos para robots
Sistemas operativos para robotsSistemas operativos para robots
Sistemas operativos para robots
 
Fund progbd 3_u1_lenguajeprogramacionjava1
Fund progbd 3_u1_lenguajeprogramacionjava1Fund progbd 3_u1_lenguajeprogramacionjava1
Fund progbd 3_u1_lenguajeprogramacionjava1
 

Destacado

Destacado (14)

A A A L A Fabula D E L B U R R O
A A A L A Fabula D E L B U R R OA A A L A Fabula D E L B U R R O
A A A L A Fabula D E L B U R R O
 
La fabula unidad 3 3
La fabula unidad 3 3La fabula unidad 3 3
La fabula unidad 3 3
 
La fábula
La fábulaLa fábula
La fábula
 
Fábula de la Tortuga y la Liebre
Fábula de la Tortuga y la LiebreFábula de la Tortuga y la Liebre
Fábula de la Tortuga y la Liebre
 
Presentacion powerpoint la fabula
Presentacion powerpoint la fabulaPresentacion powerpoint la fabula
Presentacion powerpoint la fabula
 
LA FABULA, PRESENTACION POWER POINT
LA FABULA, PRESENTACION POWER POINTLA FABULA, PRESENTACION POWER POINT
LA FABULA, PRESENTACION POWER POINT
 
texto narrativo (la fabula)
texto narrativo (la fabula)texto narrativo (la fabula)
texto narrativo (la fabula)
 
Texto narrativo el cuento
Texto narrativo el cuento Texto narrativo el cuento
Texto narrativo el cuento
 
La fábula
La fábulaLa fábula
La fábula
 
Fabula
FabulaFabula
Fabula
 
Las fábulas
Las fábulasLas fábulas
Las fábulas
 
La fábula
La fábulaLa fábula
La fábula
 
Fabula
FabulaFabula
Fabula
 
Presentacion fabula
Presentacion fabulaPresentacion fabula
Presentacion fabula
 

Similar a Introducción a D-BUS

Caracteristicas mas especificas de algunos lenguajes de programacion
Caracteristicas mas especificas de algunos lenguajes de programacionCaracteristicas mas especificas de algunos lenguajes de programacion
Caracteristicas mas especificas de algunos lenguajes de programacionDiego Erazo
 
Sistemas distribuidos
Sistemas distribuidosSistemas distribuidos
Sistemas distribuidosJaziel Torres
 
SISTEMAS DISTRIBUIDOS COMUNICACION UNIDAD 2.pptx
SISTEMAS DISTRIBUIDOS COMUNICACION UNIDAD 2.pptxSISTEMAS DISTRIBUIDOS COMUNICACION UNIDAD 2.pptx
SISTEMAS DISTRIBUIDOS COMUNICACION UNIDAD 2.pptxAdolfoEuan2
 
Balotario resuelto
Balotario resueltoBalotario resuelto
Balotario resueltoAlexiToxD
 
Estructuras Básicas en C++
Estructuras Básicas en C++Estructuras Básicas en C++
Estructuras Básicas en C++EmilyLeal6
 
arquitectura android y tecnologia mpls
arquitectura android y tecnologia mplsarquitectura android y tecnologia mpls
arquitectura android y tecnologia mplsjose-24
 
Tecnologías de Desarrollo de Sistemas Distribuidos basados en Objetos
Tecnologías de Desarrollo de Sistemas Distribuidos basados en ObjetosTecnologías de Desarrollo de Sistemas Distribuidos basados en Objetos
Tecnologías de Desarrollo de Sistemas Distribuidos basados en ObjetosTensor
 
Unidad4 plc scada Comunicaciones Industriales
Unidad4 plc scada   Comunicaciones IndustrialesUnidad4 plc scada   Comunicaciones Industriales
Unidad4 plc scada Comunicaciones IndustrialesSENA
 

Similar a Introducción a D-BUS (20)

Arquitectura distribuida
Arquitectura distribuidaArquitectura distribuida
Arquitectura distribuida
 
Osi nuevo
Osi nuevoOsi nuevo
Osi nuevo
 
Caracteristicas mas especificas de algunos lenguajes de programacion
Caracteristicas mas especificas de algunos lenguajes de programacionCaracteristicas mas especificas de algunos lenguajes de programacion
Caracteristicas mas especificas de algunos lenguajes de programacion
 
Sistemas distribuidos
Sistemas distribuidosSistemas distribuidos
Sistemas distribuidos
 
SISTEMAS DISTRIBUIDOS COMUNICACION UNIDAD 2.pptx
SISTEMAS DISTRIBUIDOS COMUNICACION UNIDAD 2.pptxSISTEMAS DISTRIBUIDOS COMUNICACION UNIDAD 2.pptx
SISTEMAS DISTRIBUIDOS COMUNICACION UNIDAD 2.pptx
 
Balotario resuelto
Balotario resueltoBalotario resuelto
Balotario resuelto
 
Estructuras Básicas en C++
Estructuras Básicas en C++Estructuras Básicas en C++
Estructuras Básicas en C++
 
Programacion
ProgramacionProgramacion
Programacion
 
arquitectura android y tecnologia mpls
arquitectura android y tecnologia mplsarquitectura android y tecnologia mpls
arquitectura android y tecnologia mpls
 
Tecnologías de Desarrollo de Sistemas Distribuidos basados en Objetos
Tecnologías de Desarrollo de Sistemas Distribuidos basados en ObjetosTecnologías de Desarrollo de Sistemas Distribuidos basados en Objetos
Tecnologías de Desarrollo de Sistemas Distribuidos basados en Objetos
 
Ccna1, cap 3
Ccna1, cap 3Ccna1, cap 3
Ccna1, cap 3
 
Unidad4 plc scada Comunicaciones Industriales
Unidad4 plc scada   Comunicaciones IndustrialesUnidad4 plc scada   Comunicaciones Industriales
Unidad4 plc scada Comunicaciones Industriales
 
Tema3 protocolos.ppt
Tema3 protocolos.pptTema3 protocolos.ppt
Tema3 protocolos.ppt
 
SEMANA 6.pptx
SEMANA 6.pptxSEMANA 6.pptx
SEMANA 6.pptx
 
como usar excel
como usar excelcomo usar excel
como usar excel
 
Osi
OsiOsi
Osi
 
Osi
OsiOsi
Osi
 
Osi
OsiOsi
Osi
 
Arquitectura de Comuniaciones
Arquitectura de Comuniaciones Arquitectura de Comuniaciones
Arquitectura de Comuniaciones
 
Osi
OsiOsi
Osi
 

Introducción a D-BUS

  • 1. D-BUS Introducción Javier Martínez de Pissón Caruncho Dani Gutiérrez
  • 2. 2 Licencia ● Creative Commons: ● Reconocimiento – Compartir por igual (by-sa): – Se permite el uso comercial de la obra y de las posibles obras derivadas, la distribución de las cuales se debe hacer con una licencia igual a la que regula la obra original
  • 3. 3 Índice 1.Introducción 2.Fundamentos de D-BUS. Diseño y Conceptos 3.Programación de D-BUS. Bindings 4.Estado actual. Usos y Futuro 5.Referencias
  • 4. 4 Introducción Los mecanismos IPC clásicos de UNIX se han quedado anticuados para las necesidades actuales de Linux ● Las aplicaciones necesitan conectividad+facilidades de programación ● Cada escritorio tiene sus propios mecanismo RPC, que al igual que los IPC, se ven anticuados ● La comunidad FreeDesktop diseñó D-BUS con el objetivo de tener un mecanismo IPC ligero y rápido, que además unifique los mecanismos RPC de los escritorios libres.
  • 5. 5 Introducción D-BUS es un mecanismo IPC moderno ● Los mecanismos IPC clásicos se basan en el intercambio de flujos de bits entre distintos procesos ● D-BUS, por el contrario, implementa un protocolo de comunicación – Orientado a conexión y con estado, pero no transaccional – Mensajes discretos formateados – Bus compartido de comunicación
  • 6. 6 Introducción D-BUS se caracteriza por dirigirse a 3 usos fundamentales ● Comunicación entre procesos de la misma máquina (intercambio de mensajes) – Implementa una comunicación IPC sencilla, similar a la clásica de UNIX ● Llamadas a métodos de objetos de procesos de la misma máquina – D-BUS se orienta a objetos; cada proceso es un objeto con su nombre y dirección correspondientes – De manera similar a los mecanismos RPC, un proceso puede descubrir y llamar a métodos de otros procesos ● Comunicación del sistema – El bus se divide en dos: ● Bus de espacio de usuario, único para cada sesión ● Bus del sistema; se usa para la comunicación de aplicaciones con la capa del kernel – Puede realizarse una comunicación directa entre ambos buses (kernel y aplicaciones del sistema)
  • 8. 8 Fundamentos de D-BUS. Conceptos. Bus El funcionamiento de D-BUS se orienta alrededor de la creación de un bus unificado y compartido por los procesos que necesitan comunicación ● Existen 2 modalidades de uso del bus a los que un proceso, denominado cliente, puede conectarse: – Bus punto a punto: ● Funcionalidad IPC clásica ● 2 procesos se conectan entre sí y se comunican a través del bus creado por uno de ellos. ● Se implementa a través de la librería dbus (no hace falta el daemon) – Bus multipunto: ● Comunicación multiproceso; permite tener arquitecturas entre procesos del tipo publish-subscribe o cliente-servidor ● Se implementa a través del dbus daemon + librería dbus –
  • 9. 9 Fundamentos de D-BUS. Conceptos. Bus El funcionamiento de D-BUS se orienta alrededor de la creación de un bus unificado y compartido por los procesos que necesitan comunicación ● Varios buses pueden estar activos en un sistema. En general se tienen siempre dos buses activos en cada momento: – Bus de sistema: ● Comunicación del sistema con aplicaciones de usuario mediante el Kernel Event Layer ● Ej: Notificaciones de hardware ● Nombre del proceso: dbus-daemon --system – Bus de sesión ● Comunicaciones IPC de propósito general ● Ej: Notificaciones de aplicaciones ● Nombre del proceso: dbus-daemon –session –
  • 10. 10 Fundamentos de D-BUS. Conceptos. Object Model D-BUS se comporta como un mecanismo RPC. Por tanto, la programación se orienta a objetos. ● En D-BUS un objeto es cualquier punto que forma parte de una comunicación; un objeto es un “recurso” expuesto por un proceso – Un proceso puede usar remotamente objetos de otros procesos – Todos los procesos conectados tienen al menos un objeto, que es el propio bus ● Los objetos se gestionan mediante métodos y señales ● Los objetos puede transmitir 3 tipos de mensajes: – Request: Peticiones a objetos desde un proceso (ligado a métodos) – Reply: Respuestas de los objetos a un proceso (ligado a métodos) – Broadcast: Difusión a todos los clientes del bus (ligado a señales) ● La comunicación establecida puede ser por tanto del tipo 1:1 o 1:N
  • 11. 11 Fundamentos de D-BUS. Conceptos. Object Model D-BUS se comporta como un mecanismo RPC. Los objetos pueden llamar a métodos de otros objetos ● Un objeto puede mandar un request invocando un método de otro objeto – El mensaje debe incluir los parámetros de entrada de la función ● La respuesta puede ser de 2 tipos: – Exception ● Devuelve el nombre del error(o errores) y el mensaje correspondiente – Reply ● Devuelve los parámetros de salida de la función invocada
  • 12. 12 Fundamentos de D-BUS. Conceptos. Object Model D-BUS se comporta como un mecanismo RPC. Los objetos pueden llamar a métodos de otros objetos ● La llamada puede realizarse de dos formas: – Llamada asíncrona: ● No bloquea al proceso ● Necesario una función de callback – Llamada síncrona ● Bloquea al proceso ● Nuevos mensajes se encolan hasta el desbloqueo ● Marshalling – Las implementaciones de alto nivel de D-BUS encapsulan el mecanismo RPC – Un programador invoca llamadas de otros procesos como si estuvieran en el propio ● Se obtiene una “copia” de un objeto que existe en otro proceso, y se usa como si estuviera instanciado en el propio código
  • 13. 13 Fundamentos de D-BUS. Conceptos. Object Model D-BUS, además de llamadas a métodos, permite el envío de señales ● Las señales en D-BUS son una forma de comunicación símplex de un objeto a múltiples destinos. – No esperan respuesta – A diferencia de las llamadas, admiten parámetros pero no se distingue entre parámetros de entrada o de salida – Un proceso debe registrar explícitamente qué señales quiere “escuchar” ● Los procesos pueden esperar o no la señal. En cualquier caso, pueden: – Ignorar la señal – Atender la señal ● Es interesante registrar únicamente aquellas señales que se van a atender –
  • 14. 14 Fundamentos de D-BUS. Conceptos. Object Model Los métodos y señales de un objeto se denominan miembros. Todos los miembros expuestos de un objeto se definen en la interfaz ● Las interfaces cumplen la misma función que en Java. – Si un objeto implementa una interfaz significa que el objeto tiene definidos todos los miembros de la interfaz, incluidos tanto los métodos expuestos como las señales que puede emitir – El objeto admite llamadas a los miembros de su interfaz ● Se representan mediante los nombres de interfaz – Ejemplo: org.freedesktop.DBus.ObjectManager –
  • 15. 15 Fundamentos de D-BUS. Conceptos. Direccionamiento Todo elemento en D-BUS tiene una dirección única y varios nombres con los que se puede acceder al mismo – Un...Un... IdentificadoIdentificado porpor Tiene el aspectoTiene el aspecto Y es elegidoY es elegido porpor Bus Address unix:path=/var/run/dbus/system_bus_socket La configuración del sistema Conexión Bus name :34-907 (unique) com.mycompany.TextEditor (well-known) D-BUS (unique) o el programa (well-known) Objeto Path /com/mycompany/TextFileManager El programa Interfaz Interface name Org.freedesktop.Hal.Manager El programa Miembro Member name ListNames El programa
  • 16. 16 Fundamentos de D-BUS. Conceptos. Direccionamiento ● El bus daemon: – Tiene una dirección y nombre únicos – La librería dbus encapsula el proceso de conexión; el proceso cliente se abstrae del bus; solo debe abrir y usar una conexión al mismo ● Los procesos cliente manejan conexiones al bus – Cada conexión tiene un nombre único que hace las veces de dirección al bus ● Los nombres son únicos mientras el bus exista (unique) ● Existen nombres reservados para los servicios Well-Known –
  • 17. 17 Fundamentos de D-BUS. Conceptos. Direccionamiento ● Se accede a un objeto mediante su dirección – La dirección recibe el nombre de path por su parecido al path de UNIX ● La llamada a un miembro se realiza mediante el nombre del mismo ● Ejemplo: – Estándar de notificaciones de D-BUS – Se representa mediante el objeto /org/freedesktop/Notifications – Implementa la interfaz org.freedesktop.Notifications – Para lanzar una notificación, se llama al miembro Notify – –
  • 18. 18 Programación de D-BUS Bindings La API provee dos maneras de implementar D-BUS en una aplicación ● Implementación de bajo nivel ● Librería escrita en C ● No es recomendable a la hora de programar una aplicación; como todo bajo nivel, puede resultar difícil y propenso a errores, ● Su objetivo es programar nuevas APIs de alto nivel ● Implementación de alto nivel ● Se basa en librerías conocidas como bindings ● Un binding en programación consiste en el mapeo de un objeto hacia una interfaz y viceversa. En D-BUS se denomina bindings a las librerías wrapper que permiten el uso de D-BUS mediante lenguajes de programación distintos a C. ● Cada binding proporciona una API; existen multitud de bindings para numerosos lenguajes de programación, siendo los más importantes y soportados: – GDBus: Wrapper orientado a la programación mediante las bibliotecas GLib – Qt4: La bilbioteca Qt incluye desde su versión 4 una librería destinada a D-Bus – Java Dbus: Wrapper escrito en Java – Python: Wrapper escrito en Python ●
  • 19. 19 Estado actual Usos ● Numerosas aplicaciones utilizan la librería dbus – Sistemas de notificaciones de escritorio ● Cinnamon, Gnome, … – Aplicaciones multimedia ● Control reproductor LastFm, Banshee – Sistemas de mensajería ● Pidgin
  • 20. 20 Estado actual Futuro: kdbus ● La idea es que el mensaje se transmita directamente entre dos procesos, despertando únicamente al dbus-daemon para la conexión inicial – Nuevo tipo de socket AF_DBUS – El cambio únicamente implica reescribir la librería dbus, lo que permite compatibilidad con las aplicaciones actuales ● Mayor rendimiento y velocidad Actualmente kdbus se encuentra en desarrollo. El objetivo del proyecto es llevar el mecanismo dbus al kernel
  • 21. 21 Referencias ● FreeDesktop: D-BUS Wiki http://www.freedesktop.org/wiki/So ● Linux Journal: Get on the D- BUS http://www.linuxjournal.com/article