「X Window System」- 基本概念

更新日期:2020年08月30日

X Window System,是用于位图显示的窗口系统,是在 UNIX 环境中经常使用的 Client-Server 显示协议。而我们常说的 X、X11 只是简写而已。

X 为图形界面环境提供基本框架:在显示设备上,绘制和移动窗口;与鼠标、键盘进行交互。但是 X 不负责用户界面,因此不同桌面环境之间的差异非常大。

该部分笔记:主要是 X Window System 的相关内容,之所以学习这些内容是为了了解它工作原理、实现某些操作。

架构概览

X 采用 Client-Server 架构。特殊的地方在于,Server 运行在本地(用户)主机中,而 Client 运行在远程主机中。

Client 是应用程序,比如 Firefox XTerm XClock 等等。负责与 Server 交流,发出请求,并接收 Server 信息。

Server 是服务端实现,比如 Xorg Server、XFree86 等等。

Server 比较特殊,Server 独占显示控制权,并服务来自 Client 的请求,并负责与用户交互(鼠标、键盘)。因此 Client(应用程序)无需关心显示细节,只需要向 Server 发送指令,比如“绘制从这里到那里的直线”、“渲染字符串”。

这样带来的好处就是 Client 与 Server 可以运行在不同的主机上,我们在本地运行 Server,但是通过 TCP/IP 网络,我们可以运行 Host A 主机上的 Firefox 程序,运行 Host B 上的 Chrome 程序,运行 Host C 上的 Thundbird 程序,而本地运行 Server 只是负责显示这些程序界面(Client 会告诉 Server 显示什么、如何显示),实际的程序运行及资源占用则是发生在远程主机上的。

当然,大多数情况下,我们是单台主机,所以 Client 与 Server 在同个主机上。

常用术语区分

XFree86 / XF86

XF86 是 X Window System 协议的实现。

Xorg Server

Xorg 是 X Window System 的开源实现。由 XFree86 4.4 RC2 分叉出来的。

The X.Org project provides an open source implementation of the X Window System.

Window Manager

在图形用户界面中,用于控制窗口系统内窗口的位置和外观的系统软件。大多数窗口管理器旨在帮助提供一个桌面环境。下图中标注的就是一个 Window Manager 的组成部分,但是图中 Window content 的内容是由 Client 或软件绘制的,它不属于 Window Manager。

Display Manager

在引导过程结束时,显示的图形用户界面,代替默认 Shell。Display Manager 有众多的实现,像 LXDM、GDM、KDM、XDM 等等。下面 KDM 截图:

软件架构

参考自维基百科「X Window System/Software architecture

「X Server」与「X Client」与日常理解的「Server」和「Client」有些相反:

  • 「X Server」:运行在”客户端“。这个”客户端“指的是你的电脑(笔记本、台式机、Whatever...);
  • 「X Client」:运行在”服务端“。这个”服务端“指的是远程主机;(也可以是”本地“(同一台主机),但是从网络上来看,「X Client」依旧是运行在远程);

之所以会出现这个情况是因为:「X」是从应用的角度来看,即「X Server」为「X Client」提供显示和I/O设备服务。

参考文献


ToC

架构概览

常用术语区分

XFree86 / XF86

Xorg Server

Window Manager

Display Manager

软件架构

参考文献