D-Bus

컴퓨팅에서 D-Bus(데스크톱 버스, "Desktop Bus")는 같은 머신에서 동시에 실행 중인 여러 컴퓨터 프로그램(즉, 프로세스) 간의 통신을 가능케 하는 소프트웨어 버스, 프로세스 간 통신 (IPC), 원격 프로시저 호출 (RPC) 매커니즘이다. D-Bus는 레드햇의 하복 페닝튼이 그놈, KDE 등의 리눅스 데스크톱 환경이 제공하는 서비스들을 표준화하기 위해 발의된, Freedesktop.org 프로젝트의 일부로서 개발되었다. 또, freedesktop.org 프로젝트는 이 사양의 참조 구현체로서 libdbus라는 이름의 자유-오픈 소스 라이브러리를 개발하였다. 이 라이브러리는 D-Bus와는 구별된다. 실제로 다른 구현체의 D-Bus 클라이언트 라이브러리도 존재하는데, 이를테면 GDBus (GNOME), QtDBus (Qt/KDE), dbus-java, sd-bus (systemd의 일부) 등이 있다. D-Bus는 원래 소프트웨어 구성 요소 통신 시스템을 대체하기 위해 설계된 IPC 매커니즘으로, 그놈 및 KDE 리눅스 데스크톱 환경(각각 CORBA, DCOP)에 의해 사용된다. 이 데스크톱 환경들의 구성 요소들은 일반적으로 수많은 프로세스에 배포되며, 제각기 몇몇의 서비스(보통은 하나의 서비스)를 제공한다. 이러한 서비스들은 자신들의 태스크를 수행하기 위해 일반적인 클라이언트 애플리케이션에 의해, 또는 데스크톱 환경의 다른 구성 요소들에 의해 사용될 수 있다. 수반되는 프로세스들의 수가 많은 까닭에 이들 간의 1대1 IPC 통신은 비효율적이고 꽤나 미덥지 못한 접근 방식이 된다. 대신, D-Bus는 소프트웨어 버스 추상화를 제공하여 단일 공유 가상 채널을 경유하여 일련의 프로세스들 간의 모든 통신을 수집한다. 버스에 연결된 프로세스들은 내부 구현 방식에 대해 알지 못하지만 D-Bus 사양은 버스에 연결된 모든 프로세스들이 이를 통해 서로 통신할 수 있음을 보증한다. 리눅스 데스크톱 환경은 하나의 버스뿐 아니라 수많은 버스들을 열거함으로써 D-Bus 기능을 활용한다: 하나의 단일 시스템 버스: 시스템의 모든 사용자와 프로세스에 이용이 가능하며, 시스템 서비스에 대한 접근 권한을 제공한다. (예: 운영 체제와 데몬이 제공하는 서비스들) 각 사용자 로그인 세션별 세션 버스: 데스크톱 서비스를 동일 데스크톱 세션의 사용자 애플리케이션에 제공하고 하나의 단위로 데스크톱 세션을 허용한다 프로세스가 버스들에 대한 접근 권한이 있다면 프로세스는 수많은 버스들에 연결할 수 있다. 즉, 어떠한 사용자 프로세스라도 시스템 버스와 현재 소속된 세션 버스에 연결할 수 있으나 다른 사용자의 세션 버스, 심지어는 동일 사용자가 소유한 다른 세션 버스에 연결할 수는 없음을 의미한다. 후자의 제한은 나중에 모든 사용자 세션이 하나의 사용자 버스로 병합되는 경우에는 변경될 수 있다. D-Bus는 정보 공유, 모듈성, 권한 격리 등 애플리케이션에 대한 기존 기능을 추가하거나 단순화한다. 이를테면, 블루투스나 스카이프를 통해 들어온 음성 통화(voice call)의 정보는 현재 실행 중인 음악 플레이어에 의해 전파되고 해석될 수 있으며 통화가 끝날 때까지 음소거하거나 재생을 일시 중지시킴으로써 반응할 수 있다. 또, D-Bus는 각기 다른 사용자 애플리케이션의 구성 요소 연동을 위한 프레임워크로서 사용될 수 있다. 이를테면, 오피스 제품군은 워드 프로세서와 스프레드시트 간 데이터 공유를 위해 세션 버스를 통해 통신할 수 있다. 리눅스 공통 언어 기반 공통 객체 요구 매개자 구조 컴포넌트 오브젝트 모델 분산 컴포넌트 오브젝트 모델 외부 함수 인터페이스 자바 원격 함수 호출 원격 프로시저 호출 XPCOM “D-Bus 1.12.x changelog”. 2018년 8월 5일에 확인함.  “NEWS file for current branch”. 2018년 11월 14일에 확인함.  Havoc's Blog July, 2007 Ward, Brian (2014) [2004]. 〈14: A brief survey of the Linux desktop〉. 《How Linux Works: What Every Superuser Should Know》 2판. San Francisco: No Starch Press. 305쪽. ISBN 9781593275679. 2016년 11월 7일에 확인함. One of the most important developments to come out of the Linux desktop is the Desktop Bus (D-Bus), a message-passing system. D-Bus is important because it serves as an interprocess communication mechanism that allows desktop applications to talk to each other [...].  Vermeulen, Jeroen (2013년 7월 14일). “Introduction to D-Bus”. 《FreeDesktop.org》. 2015년 10월 22일에 확인함.  Cocagne, Tom (August 2012). “DBus Overview”. 《pythonhosted.org》. 2015년 10월 22일에 확인함.  Vermeulen, Jeroen (2013년 7월 14일). “Introduction to D-Bus”. 《FreeDesktop.org》. 2015년 10월 3일에 확인함. D-Bus [...] is designed for use as a unified middleware layer underneath the main free desktop environments.  Palmieri, John (January 2005). “Get on D-BUS”. Red Hat Magazine. 23 October 2015에 원본 문서에서 보존된 문서. 3 November 2015에 확인함.  “gdbus”. 《GNOME developer》. 2015년 1월 4일에 확인함.  “QtDBus module”. 《Qt Project》. 2015년 6월 1일에 확인함.  “DBus-Java Documentation”. 《FreeDesktop.org》. 2015년 1월 4일에 확인함.  Poettering, Lennart (2015년 6월 19일). “The new sd-bus API of systemd”. 2015년 10월 21일에 확인함.  Pennington, Havoc; Wheeler, David; Walters, Colin. “D-Bus Tutorial”. 2015년 10월 21일에 확인함. For the within-desktop-session use case, the GNOME and KDE desktops have significant previous experience with different IPC solutions such as CORBA and DCOP. D-Bus is built on that experience and carefully tailored to meet the needs of these desktop projects in particular.  Vermeulen, Jeroen (2013년 7월 14일). “Introduction to D-Bus”. 《FreeDesktop.org》. 2015년 10월 3일에 확인함. D-Bus was first built to replace the CORBA-like component model underlying the GNOME desktop environment. Similar to DCOP (which is used by KDE), D-Bus is set to become a standard component of the major free desktop environments for GNU/Linux and other platforms.  Pennington, Havoc; Carlsson, Anders; Larsson, Alexander; Herzberg, Sven; McVittie, Simon; Zeuthen, David. “D-Bus Specification”. 《Freedesktop.org》. 2015년 10월 22일에 확인함.  Pennington, Havoc; Wheeler, David; Walters, Colin. “D-Bus Tutorial”. 2015년 10월 21일에 확인함.  Poettering, Lennart (2015년 6월 19일). “The new sd-bus API of systemd”. 2015년 10월 21일에 확인함. we are working on moving things to a true user bus, of which there is only one per user on a system, regardless how many times that user happens to log in  Love, Robert (2005년 1월 5일). “Get on the D-BUS”. 《Linux Journal》. 2014년 10월 14일에 확인함.  D-Bus home page at Freedesktop.org D-Bus specification Introduction to D-Bus on the Freedesktop.org wiki D-Bus Tutorial DBus Overview