30.5 X 窗口系统

X 窗口系统(常简称为 X)是一种基于客户端-服务器模型的应用程序,允许多个客户端程序(应用)共享由单个服务器程序管理的位图显示器。

服务器程序负责管理显示器、键盘和鼠标等硬件资源。

客户端程序则是指与服务器程序进行交互的应用程序,它们可以与服务器程序位于同一台主机上,也可以位于不同的主机上。

  • 当客户端与服务器位于不同主机时,通常采用 TCP 协议进行通信,但也可以使用 DECNET 等其他协议。
  • 在某些情况下,服务器程序可能运行在专门的硬件设备(X 终端)上,用于与其他主机上的客户端程序进行通信。
  • 当客户端与服务器位于同一台主机时,通常使用 Unix 系统的本地协议进行进程间通信,以减少协议处理时间。
  • Unix 系统的本地协议是一种高效的进程间通信机制,可以避免 TCP/IP 协议栈的开销。

通信协议

X 窗口系统需要使用可靠的双向流协议(如 TCP)进行通信。客户端程序和服务器程序之间通过交换 8 位字节流进行通信。[Nye 1992] 中详细描述了客户端和服务器程序在 TCP 连接上交换的 150 多种报文格式。

窗口管理器

通常情况下,其中一个客户端程序会作为窗口管理器,负责管理显示器上窗口的布局。例如,窗口管理器允许用户在屏幕上移动窗口、调整窗口大小等。

示例场景

图 30-1 展示了一个可能的场景,其中三个客户端程序共享一个显示器。一个客户端程序与服务器程序位于同一台主机上,使用 Unix 系统的本地协议进行通信;另外两个客户端程序位于不同的主机上,使用 TCP 协议进行通信。

术语辨析

在 X 窗口系统中,“客户端”和“服务器”这两个术语的含义可能与 Telnet 和 FTP 等应用中的含义相反。