Section 1. X Window System의 구성

1.1 X Window System이란?

X Window System은 UNIX에서 구동하는 GUI(Graphical User Interface)의 프레임워크이다.

클라이언트/서버

일반적으로 클라이언트/서버는 '서비스를 요구하는 쪽'이 클라이언트, '서비스를 제공하는 쪽'이 서버라고 정의하지만, X는 그 형태가 다르다.

X에서 서버(xserver)란 출력 장치와 입력 장치의 입출력을 담당하는 소프트웨어를 지칭한다. 서버는 키보드나 마우스의 입력을 받아 디스플레이에 화면 표시를 지시한다. X에서 클라이언트(xclient)란 실제로 X가 표시된 화면에 떠 있는 창을 말한다. 클라이언트는 서버의 입출력 지시를 받아서 서버에 화면 표시 명령을 내린다.

요즘은 X 서버와 X 클라이언트가 한 대의 PC에 있는 환경이 많지만, 한 대의 서버에 여러 개의 단말기를 접속하여 각 단말기를 X 클라이언트로 사용할 수도 있다.(책 그림 참조)

1.2 X 프로토콜

X 서버와 X 클라이언트 간에 오가는 커맨드 프로토콜을 가리켜 'X 프로토콜'이라고 한다.

X의 애플리케이션(X 클라이언트)은 X 서버인 터미널에 X 프로토콜로 정해진 시퀀스를 보낸다. 이를 X 서버가 해석해 디스플레이에 표시한다. 이 시퀀스는 TCP를 통해 네트워크를 지나간다. TCP를 통해서 서버와 클라이언트가 커뮤니케이션을 하지만, 각각이 서로 다른 호스트에서 실행되어야 할 필요는 없다. 동일 호스트에서 서버와 클라이언트를 실행할 수도 있다.

1.3 XFree86과 X.org

XFree86은 X 컨소시엄이 개발한 X의 참조 구현(reference implementation)으로, XFree86 Project가 개발한 것이다. 그러나 2004년 XFree86 Project가 라이선스를 변경하면서 관계자들 사이에서 견해차가 발생했고 이로 인해 일부 개발자들이 X.org Foundation에 합류하여 X.org 개발을 시작하게 되었다. 이후 X.org가 X의 공식 참조 구현이 되었다. Xfree86 시절 소스 아카이브는 7개의 파일로 이루어져 있었으나, 현행 X.org는 소스 아카이브가 약 70개 가까이 분할되어 있다. 배포판의 패키지도 나누어져 있으므로 사용자는 필요한 패키지만 설치하면 된다.

1.4 X 유틸리티

X 유틸리티에는 X 서버를 구동하는 커맨드 X, 디스플레이 매니저인 xdm, 단말기 에뮬레이터(터미널)인 xterm 등이 포함되어 있다. 이 프로그램들은 X 유틸이 접속할 서버를 지정함으로써 구동한다는 공통점이 있다. 클라이언트인 X 유틸리티는 자신이 표시할 서버의 커맨드 라인 인수가 되어 X 서버에 접속한다.

xterm -display 192.168.11.2:0.0

여기서 X 서버가 구동되는 호스트는 192.168.11.2로 display, 지정하고 있으며 0.0의 앞쪽 0은 표시할 디스플레이 번호를 나타내고 있다. 하나의 서버에 복수 디스플레이(클라이언트)가 접속된 경우에는 0 이외의 번호가 사용된다. 뒤의 0은 표시하려는 루트 윈도우의 번호이다.

1.5 X 세션

X에서는 서버의 구동부터 종료까지의 흐름을 관리하는 '세션'이라는 것이 있다. 이 세션을 통해 같은 X 서버상에 표시된 애플리케이션 간의 데이터 복사, 붙여넣기, 끌어다 놓기 등을 수행할 수 있다. 또한 세션 상태를 저장하거나 동작을 지정하여 X 서버 구동 시 시작 프로그램을 지정하거나 각종 설정을 수행하도록 한다.

Xnest는 X 서버 프로그램 중 하나로, 출력을 하나의 창에 표시할 수 있다. 이것은 X 서버의 테스트나 디버그, X 상에서만 이용할 수 있는 도구를 원격 호스트로 실행하는 경우에 편리하게 사용할 수 있다.

$ export DISPLAY=localhost:1.0
$ xterm &
$ gnome-terminal &

이제 Xnest로 연 X 세션에 xtermgnome-terminal이 열렸을 것이다. 환경 변수 DISPLAY에는 localhost의 디스플레이 1.0을 지정했다. 이 환경 변수를 설정한 후 xterm은 자동으로 디스플레이 1.0의 X 서버에 접속한다.

이처럼 활용하면 원격 호스트에 GUI 설치기 밖에 준비되어 있지 않은 상용 데이터베이스를 설치할 때도 직접 GUI 설치를 확인하면서 실행할 수 있다.

1.6 세션 매니저

GNOME, KDE나 Xfce 등의 데스크톱 환경에서는 각각 세션 매니저가 있으며 X 서버의 시작이나 종료 이외에 시작 프로그램 등의 데스크톱 상태를 유지하는 기능을 가지고 있다. 이 때문에 재 로그인 후에도 예전에 로그아웃했을 당시의 데스크톱 환경을 불러올 수 있는 것이다.

MUA(Mail User Agent), IRC(Internet Relay Chat) 클라이언트, 브라우저 등 로그인할 때마다 마우스로 클릭하고 실행했던 애플리케이션도 세션 매니저에 등록해 두면 로그인해서 X를 구동할 때마다 같은 환경에서 시작할 수 있다.

세션 매니저는 X 구동 스크립트나 X 디스플레이 매니저 경유로 실행된다.

results matching ""

    No results matching ""