Linux에서는 프로세스가 커널을 통해 서로 통신합니다. 내가 아는 한 X11은 서버, 즉 프로세스라는 뜻이다. 로컬 프로세스는 Unix 도메인 소켓을 사용하여 X11과 통신하고 비기본 프로세스는 TCP 소켓을 사용한다는 내용을 어딘가에서 읽었습니다(소스를 기억할 수 없으며 나중에 제공할 것입니다). X11 서버와의 통신 프로토콜은 X11 프로토콜입니다.
이제 나는 다음부터 읽었다.스택 오버플로우리가 사용하는 최종 사용자 프로세스는 실제로 X11과 직접 통신하지 않고 데스크탑 환경과 Windows 관리자를 통해 통신합니다.
그래서 지금은 클라이언트 프로세스, 데스크톱 환경, 창 관리자가 어떻게 서로 통신하는지 잘 모르겠습니다. (데스크톱 환경과 창 관리자가 프로세스인지는 잘 모르겠습니다.)
답변1
X11은 입력 장치를 듣고 화면에 쓰는 작업을 수행하는 프로세스입니다. (이를 처리하는 방법은 또 다른 질문이며 매우 복잡합니다.) 프로세스는 구성에 따라 Unix 또는 TCP 소켓을 통해 X11과 통신합니다(Unix 소켓의 경우 일반적으로 소켓 파일이 위치합니다 /tmp/.X11-unix
). 처리하는 모든 프로세스
창 관리자는 소켓을 통해 X 프로토콜을 사용하여 X11과도 통신하는 별도의 프로그램입니다. 버튼과 제목 표시줄에서 제공하는 별도의 API 세트를 사용하거나 전역 단축키에 응답합니다(최신 시스템에서는 일반적으로 Ctrl-Alt-Del이 처리됩니다). 창 관리자는 실제로 직접 명령을 내리기보다는 다른 X 프로그램에 명령만 내립니다. 프로그램이 특별한 조치를 취하면 명령을 무시할 수 있습니다. (합성 창 관리자의 경우 응용 프로그램의 중개자 역할을 하는 X 서버에 대한 실제 그래픽 렌더링도 처리하므로 상황이 좀 더 복잡합니다.) 여기에서 발생하는 모든 통신은 X 프로토콜을 사용하는 소켓을 통해 이루어집니다.
데스크탑 환경은 다양한 작업을 수행하는 프로그램 세트입니다. 일반적으로 창 관리자는 일부 그래픽 구성자 및 유틸리티, 데스크탑과 통합된 파일 관리자, 다양한 상태 업데이트를 표시하는 시스템 트레이 등을 포함할 수도 있습니다. 이들 중 대부분은 특별히 신비한 것은 아니며 X 서버에 더 많은 X 프로그램이 제공될 뿐입니다. 서로 통신해야 할 때 일반적으로 일종의 소켓을 백엔드로 사용하는 자체 프로토콜을 사용합니다. 최근에는 자체 프로토콜을 작성하는 애플리케이션에서 벗어나 dbus
.