架构及原理

Xwindow 使用服务器-客户端架构。无论本地图形界面,还是远程图形界面,都以同样的流程工作。这样便不需要分别进行设计和维护。

本地X客户端 ┐                        ┌ 键盘
远程X客户端 ┼ X协议 ─ X服务器 ─ 驱动程序┼ 鼠标
远程X客户端 ┘                        └ 显示器    

Xserver

Xwindow 系统服务器端,通过驱动程序(硬件规范)来管理硬件资源。

例如:当我们移动鼠标时,通过驱动程序[32] ,向 Xserver 发送信息:

    
      “向右移动200点,向上移动100点”(向右上移动);“按下左键”……

Xserver 作出如下响应:

  1. 上一次鼠标停止的坐标为 600,500
  2. 向右 200,向上 100。现在鼠标位于坐标 800,600
  3. 坐标 800,600 处,为窗口 Firefox 的“关闭”按钮
  4. 根据预设动作,将 “点击 Firefox 窗口的关闭按钮” 翻译为 “关闭窗口 Firefox”
  5. 向X客户端 Firefox 发送一个“退出”消息
  6. Xserver 通过显示子系统(显卡、显示器),全程显示鼠标的位置和移动
  • 事实上,向程序发送“退出”信号,通常窗口管理器完成。为了描述方便,这里暂不区分。稍后,我们将向您介绍 窗口管理器 的其它一些细节。

Xclient

Xwindow 系统客户端,通过 X协议,实现与 Xserver 的交互。例如:

  1. Xclient (假设 Firefox) 接收 Xserver 的消息: 输入焦点在地址栏的范围内,“linuxtoy.org”,回车
  2. Firefox 根据预设动作,将这些消息识别为 “打开链接 linuxtoy.org”
  3. Firefox 向域名服务器请求 链接 “linuxtoy.org”。域名服务器将这个请求转换为 “http://linuxtoy.org/” 和 IP地址211.148.131.7,发送回 Firefox
  4. Firefox 将 “http://linuxtoy.org/”显示在地址栏(向 Xserver 发送请求,在地址栏位置显示这个地址)
  5. Firefox 向地址 211.148.131.7 请示显示页面
  6. Firefox 将服务器发送回的页面显示在主窗口中

Xprotocol

Xwindow 系统协议,Xserver 和 Xclient 之间进行通信的规则



[32] 大多数的鼠标不需要专门的驱动程序,因为它们符合某一硬件规范,例如:有四个移动方向和三个键