IT용어위키



리눅스 DBus

DBus(Desktop Bus)는 리눅스 및 유닉스 계열 운영 체제에서 애플리케이션 간 통신(IPC, Inter-Process Communication)을 위한 메시지 버스 시스템이다. 프리데스크톱(freedesktop.org)에서 개발하였으며, 데스크톱 환경뿐만 아니라 시스템 서비스에서도 널리 사용된다.

개요

DBus는 프로세스 간 데이터를 교환하기 위한 메시지 버스 시스템으로, 두 개의 주요 버스를 제공한다.

  • 시스템 버스 (System Bus)
    • 시스템 전반에서 실행되는 서비스 간의 통신을 제공한다.
    • 예: 네트워크 관리(NetworkManager), udev, logind 등의 시스템 서비스.
  • 세션 버스 (Session Bus)
    • 사용자 세션 내에서 실행되는 애플리케이션 간의 통신을 담당한다.
    • 예: GNOME, KDE와 같은 데스크톱 환경의 애플리케이션 간 메시지 전송.

동작 방식

DBus는 클라이언트-서버 모델을 기반으로 동작하며, 중앙에 있는 메시지 버스 데몬이 메시지를 라우팅한다.

  • 프로세스들은 DBus를 통해 신호(Signal), 메서드 호출(Method Call), 응답(Reply)을 주고받는다.
  • 서비스는 특정 경로(Path)와 인터페이스(Interface)를 통해 노출된다.
  • 클라이언트는 버스를 통해 서비스에 접근하여 메시지를 주고받을 수 있다.

주요 개념

  • 버스 (Bus)
    • 메시지를 주고받는 채널로, 시스템 버스와 세션 버스로 구분된다.
  • 서비스 (Service)
    • 특정 기능을 제공하는 애플리케이션 또는 시스템 서비스.
    • 예: org.freedesktop.NetworkManager
  • 오브젝트 (Object)
    • 서비스 내부에서 특정 기능을 수행하는 객체.
    • 예: /org/freedesktop/NetworkManager
  • 인터페이스 (Interface)
    • 오브젝트가 제공하는 기능(API)을 정의한 인터페이스.
    • 예: org.freedesktop.NetworkManager.Device
  • 메서드 (Method)
    • 인터페이스 내에서 호출 가능한 함수.
    • 예: GetDevices()
  • 신호 (Signal)
    • 특정 이벤트 발생 시 다른 애플리케이션에 알리는 기능.

DBus 사용 예제

DBus를 이용하여 실행 중인 서비스 목록을 확인하는 명령어 예제:

dbus-send --session --dest=org.freedesktop.DBus --type=method_call \
          --print-reply /org/freedesktop/DBus org.freedesktop.DBus.ListNames

위 명령어는 세션 버스에서 실행 중인 모든 서비스 목록을 출력한다.

DBus의 활용

DBus는 다양한 환경에서 사용되며 다음과 같은 주요 활용 사례가 있다.

  • 데스크톱 환경
    • GNOME, KDE, XFCE 등에서 애플리케이션 간 통신을 위해 사용됨.
    • 예: 오디오, 네트워크, 전원 관리 기능 제어.
  • 시스템 서비스
    • 네트워크 관리자(NetworkManager), udev, systemd와 같은 시스템 서비스에서 활용됨.
  • IoT 및 임베디드 시스템
    • 저전력 디바이스 및 스마트 기기에서 서비스 간 메시지 전달을 위해 사용됨.

같이 보기

참고 문헌


  출처: IT위키(IT위키에서 최신 문서 보기)
  * 본 페이지는 공대위키에서 미러링된 페이지입니다. 일부 오류나 표현의 누락이 있을 수 있습니다. 원본 문서는 공대위키에서 확인하세요!