X Window 系统使用指南--X的基本架构( 四 )


只是重画整个视窗,因为只画视窗未被遮盖的部份往往要多花额外计算,并不
值得,在更复杂的应用程式,client才会只重画视窗必需要出现的部份,这是
由应用程式的撰写者决定,他必需在效率(视窗更新的速度)和只重画部份视
窗程式码的复杂程度间作取舍 。依赖client来重画视窗内容的方式对效率特别重视,尤其是下拉式选单,
你总不希望选下选单之後,选单过了老半天才消失而让下面的视窗显示出来吧
,为了克服这点,有些X的产品包含了被称为save-under(存下层)的便利程
式:你可以告诉server如果可能的话,尽量在一个视窗被遮盖前将其被遮盖的内容
存下,当遮盖的视窗被移走时便可立即重现而不需要送曝光 "事件" 给client 。一个类似而更常用,被称为backing store 的方式也被发展出来,你可以
告诉server尽可能在一个视窗被遮盖前将其全部内容存下,同样的,这种方式
可以改进client重画视窗的效率,backing store 和save-under两者的不同处
是前者储存整个视窗的内容,而後者只存被遮盖的部份 。虽然有了save-under和back store这两种产品,但此种结构不被担保,
client仍然随时保持准备接受曝光 "事件" ,即使server真的维护(maintain)
了一段时间的视窗内容,也可能因为记忆体不足而被迫停止,转而开始重新送
出曝光 "事件" 。
2.3 X的网路风貌我们曾经提过,client和server只需透过网路便可在不同的机器上执行,
下面几节我们将看看如何利用这种便利、为什麽有用、和它如何因整合了计
算资源而增进了网路的成长 。
2.3.1 你如何实际使用X网路当server在一个连接了显示器的机器上执行,而client在另一部机器上执
行时,滑鼠和键盘的输入由server所在的机器搜集,可是client却可以在别的
地方使用到这些输入,这是如何办到的?我们以下面的例子解释 。你在使用一个由Xserver控制显示器的工作站,如果它是独立的,很明显
地,client也在此工作站上执行,即使连接了网路,大部份的时候你还是在你
自己的工作站执行client,可是因为有一些特殊的便利程式,你的机器上并没
有,而你却希望在你的机器上显示程式的输出,这时你便需要网路上的机器了
。利用你的作业系统提供的一些普通的网路设备程式,你便可以让client程式
在远方的机器上执行,而指定输出显示在你自己工作站的显示器上,如图2-5.【X Window 系统使用指南--X的基本架构】┌—————————————┐
│ p23 fig 2.5 (???) │
│ │
│ 图 2-5 使用X网路典型 │
│ 的面貌 │
└—————————————┘就如同图上显示的机器名称,假设client程式的名称为xgraph,在Unix系统上
,你所下的命令类似下面:rsh neptune xgraph -display venus:0则xgraph程式在远方名为neptune 的机器上执行,且xgraph的输出会送到你自
己名为venus 的机器上的 0号显示器上,从现在起,我们将参照这种远方显示
(remote display)的模式操作,当client在一部机器上执行时,server在另一
部机器上执行 。现在总结一下:你使用远方显示的设备程式使得client程式在远方的机器
上被执行,而且告诉它将输出显示在执行Xserver的本地机器上 。
2.3.2 X的网路设备有何用途?在一部机器上执行client而把输出显示到另一部机器有何用途?这些用途
和便利是极常见的,以下是一小部份的用途:. 远方的机器速度比你的快很多(可能是因为加了浮点运算器或它根本就
是一部超级电脑 。) 。. 在你的区域网路上,远方的机器是一部档案服务器(file server) 提供

推荐阅读