[linux] D-bus (desktop bus)

D-bus란?

리눅스 상에서 프로세스 간 통신(IPC)을 위한 시스템 혹은 RPC 프로토콜. 다양한 컴포넌트 간에 데이터를 교환하고 이벤트를 전달하는 데에 활용.

리눅스 환경이 제공하는 서비스들을 표준화하기 위해 개발되었다.

 

IPC (Inter-Process Communication)란?

프로세스들 사이에 서로 데이터를 주고받는 행위 또는 그에 대한 방법이나 경로.

 

구조

기존 리눅스 IPC

https://ko.wikipedia.org/wiki/D-Bus

 

D-bus IPC

https://ko.wikipedia.org/wiki/D-Bus

 

구성

System Bus

시스템 전체에서 사용되며 시스템 레벨의 이벤트 및 서비스 간 통신에 사용.

Session Bus

세션 버스는 사용자 세션 내에서 동작하며 사용자 레벨의 프로세스 간 통신에 사용.

 

통신 방식

Method Call

  • 양방향 또는 한 방향으로 통신 가능
  • peer to peer (일대일) 통신 패턴
  • 애플리케이션에게 직접 메시지를 보내고 특정 메서드를 호출하여 결과를 요청

Signal

  • 한방향 통신, 이벤트를 전달하는 즉시 반환값을 기대하지 않음
  • broadcast 통신 패턴
  • 넓은 범위에 메시지를 전달하는 형태, 여러 개의 애플리케이션이 해당 이벤트를 수신