You are on page 1of 2

OpenBinder and d-bus

OpenBinder is a system for interprocess communication. It was developed at Be Inc. and then Palm, Inc.[2] and has more recently been used in the ndroid mobile phone platform developed by !oo"le[#]. OpenBinder allows processes to present interfaces which may be called by other threads. $ach process maintains a thread pool which may be used to service such re%uests. OpenBinder ta&es care of reference countin", recursion bac& into the ori"inal thread, and of course the inter' process communication itself. On the (inu) version of OpenBinder the communication itself is achieved usin" ioctls on a "iven filehandle, communicatin" with a &ernel driver. In computin", *'Bus +*es&top Bus, is a simple inter'process communication +IP-, system for software applications to communicate with one another. .eavily influenced by /*$20#1s *-OP system, *'Bus has replaced *-OP in the /*$ 2 release. 3ost PO4I5 operatin" systems support *'Bus, and a port for 6indows e)ists. It is used by 7t 2 and !8O3$. In !8O3$ it has "radually replaced most parts of the earlier Bonobo mechanism. 9ed .at operates as the primary developer of *'Bus ' as part of the freedes&top.or" pro:ect. ;reedes&top.or" releases *'Bus under the terms of the !8< !eneral Public (icense and of the cademic ;ree (icense as free software.

*esi"n *'Bus allows pro"rams to re"ister with it in order to offer services. It also allows client pro"rams to chec& for the availability of services. Pro"rams can also re"ister as waitin" for events of the &ernel, as in the case of hot'swappin" hardware. *'Bus functionality runs as a daemon= typically dbus'daemon . <sers can run several instances of it, each called a channel. 3ost systems implement a privile"ed system channel, with a private instance for each lo""ed'in user. >he private instances are re%uired because the system channel has access restrictions. >he system channel focuses on deliverin" the si"nals from the . ( +hardware abstraction layer, daemon to the processes interested in them. >he mission of the private instances is to provide unrestricted communication amon" any applications of the user.

rchitecture *'Bus has three architectural layers=[2] a library, libdbus , that allows two applications to connect to each other and e)chan"e messa"es

a messa"e'bus daemon e)ecutable, built on libdbus , that multiple applications can connect to. >he daemon can route messa"es from one application to ?ero or more applications, thereby implementin" the publish@subscribe paradi"m. wrapper libraries based on particular application framewor&s >he desi"n of *'Bus addresses two specific cases= communication between des&top applications in the same des&top sessionA to allow inte"ration of the des&top session as a whole, and address issues of process lifecycle communication between the des&top session and the operatin" system, where the operatin" system would typically include the &ernel and any system daemons or processes

3echanisms $ach application usin" *'Bus contains ob:ects that usually map to !Ob:ect, 7Ob:ect, -B B ob:ects, or Python ob:ects. $ach *'bus ob:ect operates as an instance rather than as a type. 3essa"es received over a *'Bus connection "et routed to a specific ob:ect, not to the application as a whole. In this way, *'Bus resembles software componentry, as it appears to users as if they are interactin" with an ob:ect across the IP- connection, whether or not there is an ob:ect on the other side. >o allow messa"es to specify their destination ob:ect, the system needs a way to refer to an ob:ect. 3any pro"rammin" lan"ua"es refer to this as a pointer or reference. .owever, these references are implemented as memory addresses relative to the address space of the application, and thus can1t be passed from one application to another. >o solve this, *'Bus introduces a name for each ob:ect. >he name loo&s li&e a filesystem path, for e)ample an ob:ect could have the name @or"@&de@&spread@sheets@#@cells@2@C. *'Bus encoura"es human'readable paths, but developers are free to create an ob:ect named @com@mycompany@cCyoDEFyGcEyEcCb if it ma&es sense for their application. >he *'Bus ob:ects1 names are namespaced to &eep different code modules separated. 8amespaces are "enerally prefi)ed with the developer1s domain name components +e". @or"@&de,.