Notice
Recent Posts
Recent Comments
05-21 07:17
«   2024/05   »
1 2 3 4
5 6 7 8 9 10 11
12 13 14 15 16 17 18
19 20 21 22 23 24 25
26 27 28 29 30 31
Archives
Today
Total
관리 메뉴

Byeol Lo

Linux master 1급 - X 윈도우 본문

OS/Linux

Linux master 1급 - X 윈도우

알 수 없는 사용자 2023. 2. 6. 15:56
더보기

 리눅스 마스터 1급의 이론서를 공부하면서 정리한 내용들을 적으려고 한다. 방학 동안 필기만 합격을 해놓고, 1학기의 강의를 들으면서 실기를 이번년도 상반기에 딸 것이다. 정리한 내용이 다른 분들에게도 도움이 되었으면 한다. 또한, 2급을 따지 않은 입장에서 쓴 글들은 정말 논리적으로 비약적이고, 높은 확률로 정확하지 않을 수 있으므로, 이를 보는 다른 사람들은 해당 글들을 비판하면서 볼 수 있었으면 좋겠습니다.

 플랫폼에서 독립적으로 작동하는 GUI 환경을 구현하기 위해 서버-클라이언트 구조를 기반으로 한 X 윈도우를 살펴보자.

 

X 윈도우

 X 프로토콜을 통한 네트워크 통신을 하며, X클라이언트가 X 서버 시스템에서 동작하는 응용프로그램을 사용하는 것이기에 직접 설치할 필요가 없게 된다.

X윈도우 구조

X 서버

 키보드, 마우스, 화면과 같은 디바이스와 직접 통신을 수행하고 관리하는데, X서버는 로컬의 X클라이언트와 통신하기 위해 /tmp/.X11-unix/X-0이라는 유닉스 도메인 소켓(Unix Domain Socket)을 사용한다. X서버는 원격지의 X클라이언트와 통신하기 위해 TCP포트 6000번을 사용하게 되며 로컬 및 원격지의 다수의 X클라이언트 연결을 허용한다.

 

X 클라이언트

 Xlib을 사용하여 작성된 일종의 응용 프로그램이며, 디스플레이 관련 서비스를 X 서버에게 요청하고, X 서버에서 받은 마우스 입력이나 키보드 입력 등의 처리 또한 한다.

 

X 프로토콜

 X서버와 X클라이언트가 정보를 주고 받기 위한 메시지 형식을 정의한 통신 규약이며, 기본적으로 메시지는 Request, Reply, Event, Error로 구성되게 된다. X 서버와 X 클라이언트는 X 프로토콜의 메시지를 처리하기 위해 request queue, event queue를 운용한다. X 프로토콜을 통해 X서버와 X클라이언트는 높은 이식성을 갖게 되었고 원격지에서도 로컬에 접속하는 것과 같은 동일한 사용자 경험을 갖는 것이 가능하게 됐다.

 

 Xlib/XCB

 C언어로 작성된 X윈도우 시스템 프로토콜 클라이언트 라이브러리이다. 개발자는 X프로토콜을 알지 못해도 Xlib에서 제공하는 API를 통해 X클라이언트를 개발할 수 있게 된다. 또한, Xlib 기반으로 강력한 라이브러리(Xt : X Toolkit Intrinsic, XaW : Athena widget set, Motif, FLTK, GTK+, Qt, Tk, SDL, Massey)가 제공되고 있다. XCB는 Xlib을 대체하기 위해 나온 새로운 프로젝트이며, X.org에서는 XCB를 사용 중이다.

 

XToolkit

 Xt라고도 부르며, GUI프로그램 개발을 위해 C/C++로 개발된 API 프레임 워크를 뜻한다. Xlib에 비해 메뉴나 버튼 등의 요소가 추가되어있다. 반면, 최근의 FLTK, GTK+, Qt와 같은 툴킷은 Xlib/XCB 기반으로 구현되었고, XToolkit을 사용하지 않는다.

GUI 프레임 워크 관련 라이브러리

 

XFree86

IBM 호환 시스템을 사용하는 오픈소스 X 서버 프로젝트이다. 하지만, 4.4.0 버전이 GPL라이선스와 호환되지 않으면서 밑에서 설명하는 X.org 프로젝트를 더 많이 사용하게 된다.

 

X.org

 XFree86의 4.4RC2 버전과 X11R6.6 버전을 기반으로 X.org 파운데이션과 freedesktop.org에서 개발하였고 2004년에 시작되었다.

 

 해당 포스트는 X윈도우의 전반적인 개념들을 살펴보았다. 다음 포스트에서는 어떻게 실제로 잘 쓸 수 있는지에 대해 더 자세히 다루게 된다.

Comments