X 윈도의 구조
쉽게 말하면
리눅스의 그래픽 화면을 담당하는 시스템이 X 윈도예요. 화면을 실제로 그리는 쪽(X 서버)과 '이거 그려 주세요'라고 부탁하는 프로그램(X 클라이언트)이 나뉘어 있어서, 프로그램은 다른 컴퓨터에 있어도 내 화면에 띄울 수 있어요. 내 앞의 화면이 '서버'라는 점이 헷갈리기 쉬워요.
시험용 정의
X 윈도 시스템(X11)은 유닉스·리눅스의 그래픽 환경을 제공하는 네트워크 기반 클라이언트-서버 시스템이다. 1984년 MIT에서 시작했고, 현재 리눅스의 구현은 X.Org(Xorg) 서버다.
비유로 이해하기
X 서버는 극장의 스크린과 영사 담당, X 클라이언트는 "이 장면을 틀어 주세요"라고 요청하는 영화사다. 영화사는 다른 도시(원격 컴퓨터)에 있어도 된다.
자세히
서버와 클라이언트가 거꾸로처럼 보이는 이유
보통 "서버"는 멀리 있는 큰 컴퓨터를 떠올리지만, X에서는 화면·키보드·마우스를 가진 쪽이 서버다. 기준은 "누가 서비스를 제공하느냐"다. X 서버는 화면에 그려 주고 입력을 전달하는 서비스를 제공하고, 프로그램(X 클라이언트)은 "여기에 창을 그려 줘"라고 요청한다.
그래서 원격 서버 컴퓨터에서 firefox를 실행하고 내 모니터에 띄우면, 내 PC가 X 서버, 원격 컴퓨터에서 도는 firefox가 X 클라이언트다. X가 처음부터 이렇게 네트워크로 화면을 주고받도록 설계되었기 때문에(네트워크 투명성) 가능한 일이다.
- 디스플레이: X 서버 하나가 관리하는 화면·입력 장치 묶음. 번호 0부터(:0)
- 위젯 툴킷: 버튼·메뉴·스크롤바 같은 화면 부품을 미리 만들어 둔 라이브러리. 같은 툴킷을 쓰면 프로그램들의 모양이 통일된다
- Wayland: X를 대체하려고 만든 새 디스플레이 서버 프로토콜. 구조가 단순하고 보안이 낫다. 요즘 GNOME·KDE 기본값
구성 요소
| 요소 | 역할 |
|---|---|
| X 서버 | 디스플레이·입력 장치를 관리하고 클라이언트 요청대로 화면에 그림 (Xorg) |
| X 클라이언트 | xterm, firefox 같은 그래픽 응용 프로그램 |
| X 프로토콜 | 서버와 클라이언트가 주고받는 통신 규약. 네트워크로도 동작 (TCP 6000+디스플레이 번호) |
| Xlib · XCB | X 프로토콜을 쓰기 쉽게 한 C 라이브러리 |
| 위젯 툴킷 | 버튼·메뉴 등 부품 모음. GTK+(GNOME), Qt(KDE), Motif |
| 윈도 매니저 | 창 테두리·이동·크기 조절·배치 담당. X 클라이언트의 일종 (Mutter, KWin, Openbox, twm) |
| 디스플레이 매니저 | 그래픽 로그인 화면 (GDM, SDDM, LightDM, XDM) |
역사와 흐름
MIT 아테나 프로젝트(1984) → X11(1987, 현재까지 11번째 버전) → 리눅스 초창기 구현 XFree86 → 라이선스 문제로 갈라져 나온 X.Org가 표준이 됨. 최근 배포판은 X를 대체하는 Wayland를 기본으로 쓰는 경우가 많고, 기존 X 앱은 XWayland로 돌린다.
X 윈도의 특징
- 네트워크 투명성: 원격 컴퓨터의 프로그램을 내 화면에 띄울 수 있음
- 화면 모양(윈도 매니저, 데스크톱 환경)을 자유롭게 바꿀 수 있음
- X 자체는 커널의 일부가 아닌 일반 응용 프로그램
시험에 나오는 그 밖의 말
| 말 | 뜻 |
|---|---|
| Xfce | 가벼운 데스크톱 환경이다. 윈도 매니저가 아니다 (윈도 매니저는 Xfce 안에 든 Xfwm) |
| Metacity | GNOME 2 시절의 윈도 매니저. 뒤를 이은 것이 Mutter |
시험에 이렇게 나와요
- X 윈도가 쓰는 TCP 포트 → 6000(디스플레이 번호만큼 더함)
- X 서버와 통신하는 저수준 C 라이브러리 → Xlib, 이를 대체하는 → XCB. 통신 규약은 X 프로토콜
- 초기 리눅스 X 구현 → XFree86(이후 X.Org)
- 사용자 로그인과 세션을 관리하는 요소 → 디스플레이 매니저, 창 배치·모양 담당 → 윈도 매니저
- 윈도 매니저가 아닌 것 → Xfce(데스크톱 환경). 윈도 매니저 예: KWin, Mutter, Metacity, twm
확인 문제
Q1. 내 노트북에서 ssh로 원격 서버에 접속해 그 서버의 xclock(시계 프로그램)을 실행하니 시계가 내 노트북 화면에 떴다. 이때 X 서버는 어디일까?
- X 서버는 필요 없다
- 둘 다
- 원격 서버
- 내 노트북
정답 보기
4번 내 노트북
X 윈도에서 X 서버는 화면·키보드·마우스를 가진 쪽, 즉 내 노트북이다. 원격에서 실행된 xclock은 화면을 그려 달라고 요청하는 X 클라이언트다. 흔히 생각하는 서버/클라이언트와 방향이 반대라서 시험에 자주 나온다.
Q2. X 윈도 시스템이 네트워크 통신에 쓰는 기본 TCP 포트는?
- 22
- 80
- 631
- 6000
정답 보기
4번 6000
6000번이다. 디스플레이 번호를 더해 :0은 6000, :1은 6001을 쓴다. 631은 CUPS 인쇄 포트다.
Q3. 다음 중 윈도 매니저가 아닌 것은?
- twm
- Metacity
- KWin
- Xfce
정답 보기
4번 Xfce
Xfce는 창 관리자를 포함한 데스크톱 환경이다. KWin(KDE), Metacity(옛 GNOME), twm은 창 관리자(윈도 매니저)다.
Q4. 그래픽 로그인 화면을 띄우고 사용자 세션을 관리하는 X 구성 요소는?
- Xlib
- X 프로토콜
- 디스플레이 매니저
- 윈도 매니저
정답 보기
3번 디스플레이 매니저
GDM, SDDM 같은 디스플레이 매니저.
Q5. X 윈도에 대한 설명으로 틀린 것은?
- 네트워크 투명성을 가진다
- 윈도 매니저를 바꿔 쓸 수 있다
- 커널의 일부로 동작한다
- 클라이언트-서버 구조다
정답 보기
3번 커널의 일부로 동작한다
X는 사용자 영역의 응용 프로그램이다.
Q6. 창의 배치·이동·크기 조절 등을 담당하는 것은?
- 윈도 매니저
- 디스플레이 매니저
- X 프로토콜
- Xlib
정답 보기
1번 윈도 매니저
윈도 매니저. 로그인 화면은 디스플레이 매니저.
Q7. 현재 리눅스에서 널리 쓰이는 X 서버 구현은?
- X.Org
- Xlib
- Motif
- XFree86
정답 보기
1번 X.Org
X.Org(Xorg). XFree86은 이전 구현.
헷갈리기 쉬운 O·X
X 윈도에서 X 서버는 응용 프로그램이 실행되는 원격 컴퓨터다.
정답 보기
X X 서버는 화면·입력 장치가 있는 쪽(사용자 앞의 컴퓨터).
GTK+는 GNOME, Qt는 KDE의 기반 툴킷이다.
정답 보기
O 짝으로 외우자.
Wayland는 X 윈도를 대체하기 위한 디스플레이 서버 프로토콜이다.
정답 보기
O 기존 X 앱은 XWayland로 실행.