안녕하세요 오늘은 X 윈도우에 대해 알아보는 시간을 갖도록 하겠습니다.
X 윈도우란 플랫폼 독립적으로 작동하는 GUI 환경을 구현하기 위해 디스플레이 장치에 윈도우를 그려주고 마우스 및 키보드 등 입력장치를 통해 사용자와의 상호작용을 가능하게 하는 플랫폼입니다. X 윈도우는 서버 클라이언트 모델을 사용하여 네트워크로 연결될 수만 있다면 언제든 사용할 수 있습니다. 이로 인해 X 서버와 X 클라이언트가 정보를 주고 받기 위한 메시지 형식을 정의한 통신 규약인 X 프로토콜만 준수할 수 있다면 어떤 시스템이든 쉽게 X 윈도우를 이식할 수 있습니다.
X 윈도우 계층은 크게 X 서버 계층과 X 클라이언트 계층으로 나뉘어집니다.
X 서버 계층은 키보드, 마우스, 디스플레이 등의 디바이스와 직접 통신을 수행하고 관리하는 역할을 담당하며 디스플레이 장치를 제어하고 X 클라이언트 게층에 디스플레이 서비스를 제공합니다. 로컬(유닉스 도메인 소켓) 및 원격(6000 포트)로 다수의 X 클라이언트와 연결을 허용하며, X 프로토콜의 메시지를 처리하기 위해 request queue, event queue 등을 운용합니다.
X 서버 계층의 가장 처음 디스플레이 매니저가 존재합니다. 디스플레이 매니저는 그래픽으로 구성된 로그인 유저 인터페이스를 사용자에게 제공하는 역할을 담당하며 X 윈도우 프로세스에서 가장 첫 단계에서 실행됩니다. 로그인 인증이 성공하면 사용자의 세션을 시작하고 디스플레이 서버와 사용자의 환경을 초기화합니다. 디스플레이 매니저가 실행된 후 X 클라이언트에게 요청을 받을 준비를 하여 요청이 오면 요청 내용을 화면에 출력합니다.
X 서버에 X 클라이언트가 연결되면 X 세션이 형성됩니다. 이렇게 생성된 X 세션을 통해 X 프로토콜에 맞춰 메시지가 송수신됩니다.
X 클라이언트 계층은 Xlib을 사용하여 작성된 일종의 응용 프로그램입니다. 쉽게 말해 그림판, 메모장 등 사용자들과 상호작용하는 프로그램들입니다. Xlib은 C언어로 작성된 X 윈도우 시스템 프로토콜 클라이언트 라이브러리로 X 프로토콜의 상세 내용을 알지 못해도 제공하는 API를 통해 X 클라이언트를 개발할 수 있습니다. X 클라이언트에서는 X 서버에 그래픽 요청을 보내고 요청을 받은 X 서버에서 요청값을 화면에 출력합니다.
X 클라이언트 계층에는 윈도우 매니저 - 데스크탑 환경 & 위젯 툴킷 - 어플리케이션 등이 존재합니다.
윈도우 매니저는 X 윈도우 상에서 윈도우의 그래픽 요소를 관리하는 매니저 프로그램입니다. X 클라이언트들이 화면에 표시되는 방법 등을 결정하며 스택형, 타일형, 복합형 등 여러 타입이 존재합니다.
데스크탑 환경은 윈도우 매니저 뿐만 아니라 계정 관리, 디바이스 관리, 문서 관리 등 데스크탑 구성을 위한 모든 애플리케이션을 포함한 패키지 형태입니다.
즉 정리하자면, X 윈도우는 X 클라이언트에서 X 서버로 그래픽 요청을 보내면 요청받은 X 서버에서 디스플레이에 표시하여 사용자에게 보여주는 프로세스로 동작합니다.