X, Xorg 및 D-Bus: 차이점은 무엇입니까?

X, Xorg 및 D-Bus: 차이점은 무엇입니까?

GUI 프로그래밍에서 특정 작업(예: 응용 프로그램을 위한 화면 공간 예약)을 수행하는 방법을 배우는 과정에서 일반적으로 Linux의 X11(배포판이 하나 있는지 확실하지 않음)과 같은 창 관리자에 대해 더 많이 배워야 했습니다. X11 이외의 다른 것을 사용한다고 들었지만웨이랜드은(는) 아직 어떤 버전에서도 구현되지 않았습니다. )

저는 프로그래밍이 처음이고 참을성이 없어서 그냥 파고들었습니다. 이제 저는 ICCCM을 읽고 있으며 더 많은 것을 배우고 싶습니다. 그러나 이 문서는 나보다 더 많은 것을 알고 있는 대중을 대상으로 합니다. 그래서 몇 가지 정보를 찾았고 명확한 설명을 듣고 싶습니다.

제 2 장ICCCM 인용문:

소유자와 요청자 간에 전송되는 모든 데이터는 일반적으로 X 버전 11 환경의 서버를 통과해야 합니다. 클라이언트는 다른 클라이언트가 동일한 파일을 열 수 있거나 직접 통신할 수 있다고 가정할 수 없습니다. 다른 클라이언트는 완전히 다른 네트워크 메커니즘을 통해 서버와 통신할 수 있습니다. 예를 들어 한 클라이언트는 DECnet이고 다른 클라이언트는 TCP/IP일 수 있습니다. 따라서 데이터(예: 파일 이름, 호스트 이름, 포트 번호 등)에 대한 간접 참조 전달은 두 클라이언트가 명시적으로 동의하는 경우에만 허용됩니다.

내가 이해한 바로는 X Window Manager는 X Server 위에 구축되었습니다(Wikipedia 덕분에). 위의 인용문에서는 클라이언트가 DECnet 또는 TCP/IP를 사용하여 서버와 통신할 수 있다고 말합니다. 지금까지 나는 "서버"가 비유적인 표현이라고 생각했는데 이제 궁금합니다.X 서버는 "웹 서버"의 서버입니까? 기능/정의를 어떻게 이해해야 합니까?

그 다음에는 X11, Xorg, X Server 및/또는 X Window Manager가 자주 언급됩니다. 혼란스러워집니다.X11은 Xorg 및 X Window Manager를 포함하는 번들입니까? 그렇다면 이 X11 번들에는 또 다른 것이 있나요?

X에는 ​​마우스나 키보드 또는 다른 종류의 입력도 필요합니다.이것도 X 서버 기능의 일부입니까? X Window Manager는 디스플레이에만 중점을 두고 있나요?

마지막으로 위의 인용문에는 클라이언트가 서로 통신할 수 있는지 여부도 언급되어 있습니다. 이는 제가 학습 목적으로 사용했던 D-Bus를 생각나게 합니다. D-Bus를 사용하면 창 이벤트를 실행할 수도 있습니다. 이로 인해 프로그램이 서로 어떻게 통신해야 하는지에 대해 약간 혼란스러워졌습니다.*X 서버를 사용하거나 D-Bus를 사용하여 상호 작용하는 프로그램의 차이점은 무엇입니까? *

이 정보가 아직 다소 모호하여 배우기가 더 어렵다는 점은 아쉽지만, 이에 대한 통찰력을 얻으실 수 있기를 바랍니다. :) 감사합니다.

답변1

여기서 5가지 질문을 하셨습니다. 5가지 질문을 하는 것이 더 나을 것 같습니다. ☺ 하지만 제가 대답하겠습니다.

  1. X는 특정 프로토콜(X 프로토콜)을 사용하여 들어오는 연결을 수신하고 응답을 내보내는 프로세스라는 점에서 "웹 서버"와 비교할 수 있는 서버입니다. 연결은 로컬 호스트에 있거나 네트워크를 통해 액세스할 수 있는 원격 호스트에 있을 수 있는 X 클라이언트에서 이루어집니다.

  2. X11은 X 프로토콜의 "주요 버전"이며 처음부터 지속적으로 개발되어 왔습니다. X11은 최신 프로토콜이자 가장 일반적인 프로토콜입니다. (Xorg는 Mac OS X에서 실행되는 X 서버 브랜치 모음의 구현입니다.)

  3. "창 관리자"는 창을 관리하는 X 클라이언트입니다. 일반적으로 경사/테두리, 그림자, 버튼이 포함된 메뉴 표시줄 등을 사용하여 창을 장식하고 창 끌기, 크기 조정 또는 재배열 등을 지원하는 창 배치 논리를 처리합니다.

  4. X에는 ​​입력이 필요하며 X와 커널은 해당 입력을 공동으로 관리합니다. 역사적으로 X는 많은 하드웨어 관리 작업을 직접 수행했습니다. 현대에는 Linux 플랫폼에서 X가 점차 "더 작아지고" 이 책임을 Linux 커널에 위임했습니다. 이것의 장점은 다음과 같습니다: X 코드 기반이 더 작습니다. 동일한 작업을 관리하려는 커널과 X 사이에 "교차선"이 더 적습니다. (Linux 이벤트 인터페이스는 마우스 등의 이벤트가 커널과 해당 드라이버에 의해 해석되어 /dev/input/event*X 서버에서 사용할 수 있도록 표준 인터페이스로 변환되는 예입니다.) 다른 플랫폼(BSD, Solaris)에서 X는 여전히 매우 단일체입니다.

  5. 프로세스 간에 통신하는 방법은 매우 많습니다. 나는 X 클라이언트가 X 프로토콜을 통해 상호 작용할 수 있다고 믿습니다(예: 전통적 프로토콜이 이를 반영함). D-Bus는 다른 방법의 단점을 해결하도록 설계된 현대적인 프로세스 간 통신(IPC) 기술입니다. X 특정이 아닙니다.

관련 정보