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


35

GUI 프로그래밍에서 특정 일을하는 법을 배우는 과정 (예 : 응용 프로그램의 화면 공간 확보)에서 Linux의 X11 (일반적으로 X11)에 대해 더 많이 알아야합니다 (디스플레이가 있는지 확실하지 않습니다. 는 아직 구현되지 않은 Wayland 에 대해 들었지만 X11 이외의 다른 것을 사용 합니다.)

저는 프로그래밍에 익숙하지 않고 참을성이 없습니다. 그래서 나는 단지 그것에 뛰어 들고있다. 이제 더 배우고 자하는 ICCCM을 읽고 있습니다. 그러나이 문서는 나보다 더 많은 것을 알고있는 대중을 대상으로합니다. 그래서 나는 몇 가지 정보를 발견했고, 약간의 설명을 얻고 싶습니다.

ICCCM 인용문의 섹션 2 :

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

내가 이해하는 한 X Window Manager는 X 서버 상단에 구축되어 있습니다 (Wikipedia 덕분에). 위 인용문에서 : 클라이언트가 DECnet 또는 TCP / IP를 사용하여 서버와 통신 할 수 있다고합니다. 지금까지 나는 "서버"가 말의 그림이라고 생각했다. 이제 의심 스럽다 : X 서버가 "웹 서버"에서와 같은 서버인가? 기능 / 정의를 어떻게 이해해야합니까?

그런 다음 X11, Xorg, X Server 및 / 또는 X Window Manager에 대한 참조가 종종 있습니다. : 그것은 혼란을 얻을 X11은으로 Xorg와 X 창 관리자를 포함하여 번들입니까? 그렇다면이 X11 번들에 다른 것이 있습니까?

X는 또한 마우스 나 키보드 또는 다른 종류의 입력이 필요합니다. X 서버 기능의 일부입니까? X Window Manager는 디스플레이 만 엄격하게 보입니까?

마지막으로 위의 인용문은 고객과의 의사 소통 여부를 언급합니다. 이것은 D-Bus를 상기시켜주었습니다. 학습 목적으로 조금 사용했습니다. D-Bus를 사용하면 윈도우 이벤트를 트리거 할 수도 있습니다. 프로그램이 서로 통신하는 방법에 대해 약간 혼란스러워합니다. * X Server 또는 D-Bus를 사용하여 상호 작용하는 프로그램 사이에는 어떤 차이점이 있습니까? *

이 정보가 어떻게 든 모호한 점이 아쉽지만, 배우기가 더 어려워 지지만, 이것에 대해 약간의 정보를 얻을 수 있기를 바랍니다. :) 감사합니다.

답변:


61

여기서 5 가지 질문을하고 5 가지 질문을하는 것이 좋습니다. ☺ 그러나 나는 뛰어들 것입니다 :

  1. X는 서버이며 특정 프로토콜 (X 프로토콜)을 말하는 수신 연결을 수신하고 응답을 실행한다는 점에서 "웹 서버"와 비교할 수 있습니다. 연결은 로컬 클라이언트 또는 네트워크를 통해 액세스 한 원격 호스트에있는 X 클라이언트에서 제공됩니다.

  2. X11은 X 프로토콜의 "주요 버전"으로, 처음부터 발전했습니다. X11은 가장 최신 프로토콜이며 가장 일반적입니다. Xorg는 X11과 대화하는 X 서버, X 라이브러리 및 클라이언트 모음의 구현입니다. XFree86이 크게 사용되지 않거나 Hummingbird Exceed와 같은 상용 제품, Mac OS X에서 실행되는 XQuartz와 같은 포크 등 다른 구현이 있습니다. )

  3. "창 관리자"는 창을 관리하는 X 클라이언트입니다. 일반적으로 경사 / 테두리, 그림자, 단추가 포함 된 메뉴 막대 등으로 창을 장식하고 창 배치 논리를 처리해야합니다. 드래그, 크기 조정 또는 재정렬되는 창 지원 등

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

  5. 프로세스가 서로 통신하는 방법에는 여러 가지가 있습니다. X 클라이언트는 X 프로토콜을 통해 상호 작용할 수 있다고 생각합니다 (예 : 기존 X 창 관리자는 다른 클라이언트가 창을 장식 할 때 창을 장식 할 때 알아야 함). 호출기는 호출기에 반영하십시오). D-Bus는 다른 방법의 단점을 해결하기 위해 개발 된 최신 프로세스 간 통신 (IPC) 기술입니다. X에 한정되지 않습니다.


감사합니다! 정말 도움이됩니다. 5 가지 질문에 관하여 :이 경우 프로토콜이 무엇인지 잘 모르겠지만, 관리자가 프로토콜을 나누기를 원할 경우 그 소식을들을 수 있습니다. 개인적으로 한 문서에 포함시키고 5 개의 질문을 제목에 대한 하위 질문으로 봅니다. 다시 감사합니다.
Benjamin

프로토콜을 호핑하지 않는 요점은 X Window System이 동일한 호스트에서 응용 프로그램 ( "클라이언트")을 실행할 필요가 없도록 설계되었다는 것입니다. 즉, 다른 컴퓨터에 로그인하여 프로그램을 실행할 수 있으며 창이 화면에 열립니다 로컬 응용 프로그램처럼. 다른 프로그램에서 "프로세스 ID가 무엇인지 직접 물어볼 수 있습니다"라고 물으면이 질문에 올바르게 대답 할 방법이 없습니다.
Simon Richter

당신은 할 수 없습니다 X 서버에 의해 공유 자원이 하나 개 이상의 모니터 두 개 이상의 입력 장치 (키보드, 마우스)로 구성되는 디스플레이입니다
hildred

5 가지 질문 모두 함께 도움이되었습니다. 고맙습니다.
Harvey

@hildred 키오스크 구성의 터치 스크린의 경우 입력 장치를 하나만 가질 수 있습니다.
Shadur
당사 사이트를 사용함과 동시에 당사의 쿠키 정책개인정보 보호정책을 읽고 이해하였음을 인정하는 것으로 간주합니다.
Licensed under cc by-sa 3.0 with attribution required.