|
发表于 2004-11-30 23:43:59
|
显示全部楼层
X於1984年在麻省理工学院 (MIT)电脑科学研究室开始发展, 当时 Bob
Scheifler 正在发展分散式系统 (distributed system),同一时间 DEC公司
的 Jim Gettys 正在麻省理工学院做 Athena 计画的一部份, 两个计画都需
要一个相同的东西 ------ 一套在 UNIX 机器上优良的视窗系统. 因此合作
关系开始展开, 他们从史丹佛 (Stanford) 大学得到了一套叫做W的实验性
视窗系统, 因为是根据W视窗系统的基础开始发展,当发展到了足以和原先
系统有明显区别时,他们把这个新系统叫做X.
严格地说, X视窗系统并不是一个软体, 而是一个协定 (protocal),这
个协定定义一个系统成品所必需具备的功能 (就如同 TCP/IP, DECnet 或
IBM的 SNA,这些也都是协定, 定义软体所应具备的功能).任何系统能满足此
协定及符合X协会其他的规□, 便可称为X.
Xinit - 初始(initialization)程式, 启动系统和设定Server执行.
Xdm - X显示管理器(display manager),一个提供便利和弹性地启动系统
, 使系统启动成个别需求的程式, 可以和 Xinit两者择一.
Uwm - X视窗管理器(Window Manager), 此程式决定如何管理你的 "案头"、
移动视窗、重定视窗大小等等, 你可以利用选单结合滑鼠的按钮
或键盘完成视窗操作.
只有Server程式是绝对必需的, 不需其它的程式, 你就可以在X系统上
跑其它的应用程式 (虽然笨了一点). (Xinit 等程式可由其它相同功能程式
替代.)
以上程式包含了视窗系统, 但除了在视窗上移动游标外, 什麽事也不能
做. 因此实际上, 你需要更多的公用程式和应用程式.
以下的工具程式并不是视窗系统的一部份, 但它们是你要更方便的使用
系统或利用系统做更多的事所不可或缺的, 它们分为以下两个部份:
1. 视窗系统操作常用工具程式
只要你用视窗系统代替一般的电脑终端机, 这些程式几乎是天天需
要的:
xterm - X终端机模拟器 (terminal emulator), 你的系统内大多
数的程式并非特别为使用视窗系统设计. 举例来说, 一些
最普通的系统程式 -- 列出档案目录, 编辑器, 编译器等,
它们在普通的终端机可以正常的执行, 可是它们如何在连
视窗系统是什麽都不知道的情况下, 在X下操作? Xterm
就是建立一个X的视窗, 且允许这些普通的 "笨哑终端机
(dumb terminal)"程式能够在这个视窗中执行的工具程式.
这些普通程式会认为它们是在 "真的" 终端机上执行. 当
然, 你也可以用xterm 去启动其它的X程式而并非一定是
那些普通程式.
xhost - 让你控制网路上那些被允许存取你的显示萤幕的其他主机。
xkill - 一个可杀掉不想要之应用程式的工具程式。
xwd - 将你视窗内目前的影像倾印 (dump) 到一个档案中,使得你可
以在稍後重建这个视窗、列印它或做一些你想做的事。
xpr - 将先前 xwd所抓取 (capture)的视窗影像转换成适合硬拷贝
(hardcopy)印出的格式.
xdpr - 结合了 xwd和 xpr,允许你在一个步骤就印出视窗的内容.
xmag - 将萤幕上被选取的一部份影像加以放大。
xwud - 将先前 xwd所抓取的视窗影像重新显示於萤幕上。
x10tox11 - 将能在第10版X执行的程式转换成可在第11版执行。
xrefresh - 更新 (refresh)显示, 将某些或全部的视窗全部重画
一遍。
2. 便利的程式
xclock - 一个指针或数字型的时钟。
xclac - 一个计算器,可模拟科学工程型的计算器。
xload - 用累计图 (histogram)来显示目前机器的负载分布。
xbiff - X版的 biff,信件到达告知 (barfs if mail arrives) 程
式,xbiff 会显示一个信箱的表徵图,当信箱上的旗子升起时,
表示有你的信。
X不像早期的视窗系统,把一堆同类软体集中在一起,而是由三个相关的
部份组合起来。
1. 一个"server"(供应者):是控制实际显示器和输入装置的程式。
2. "Client" (顾客) 程式:需藉著server在指定的视窗中完成特定的
操作。
3. 一个 "通讯通道(communication channel)":client和server用来作
为彼此交谈之用。
基本的"server","client"和 "通讯通道" 的关系图如图2-1 。
┌??????????????????????????????????????????
│ p16 fig 2.1 │
│ │
│ 图 2-1 X的基础成员 │
└??????????????????????????????????????????
底下我们描述一下这三个部份。
Server是控制实际显示器和它的输入装置 (键盘和滑鼠或其它指示装置)
的软体,server可以建立视窗、在视窗中画图形影像和文字、回应client程式
的 "需求" (requests),它不会自己动作,只有在client程式提出需求後才完
成动作。
每一个显示器只有一个唯一的server。server一般由系统的供应厂商提供
,通常无法被使用者修改。针对作业系统而言,server只是一个普通的使用者
程式而已,因此很容易换一个新的版本,或许甚至是由第三集团提供的原始程
式 (注1) 。
注1:这是Unix系统上的情况,有些供应厂商会选择将server的部份或全部放
在作业系统核心(kernel)。
Client是使用系统视窗功能的一些应用程式。把X下的应用程式称作
"client",原因是因为它是server的 "顾客" :它要求server应它的需求
完成特定的动作。
Client无法直接影响视窗或显示,它们只能送一个 "需求" (request) 给
server,让server来完成它们的需求。典型的 "需求" 通常是: "在 XYZ视窗
中写一列 'Hello, world' 的字串" ,或 "在 CDE视窗中用这种颜色从 A点到
B点画一条直线" 。
当然,对视窗操作提 "需求" 只是client程式的一部份,其它的部份是那
些让使用者执行的程式部份。例如:编辑文字、画一个系统的工程图、执行计
算表的计算等等。一般来说,client程式的这个部份和视窗是独立的,对於视
窗几乎不需要知道什麽,通常 (特别是指大型的标准绘图套装软体,统计套装
软体等) 应用程式对许多的输出装置具有输出的能力。在X视窗上的显示只是
client程式许多输出格式中的一种,所以,client程式中和X相关的部份在整
个程式中,只占了非常小的一部份。
使用者可由不同的来源来使用client程式:一些是由系统提供的 (例如时
钟) ,一些来自於第三集团,一些是使用者为了特殊应用而撰写他自己的client
程式。
X的第三个元素为通讯通道,client藉著它送 "需求" 给server,而server
藉著它回送状态 (status) 及一些其它的资讯 (information)。
只要 client 和 server 都知道如何使用通道,通道的本身并不是很重要
,在系统或网路上支援通讯型态的需求是内建於系统基本的X视窗函数馆(library)
,所有和通讯型态有关的事都从函数馆独立出来,client和server之间的通讯
只要藉著使用这函数馆(在标准X版为xlib)即可,如图2-2 。
┌??????????????????????????????????????????
│ p17 fig 2.2 │
│ │
│ 图 2-2 xlib函数馆的功能│
└??????????????????????????????????????????
总结来说,只要client程式利用函数馆,自然有能力用到所有可用的通讯
方法。
Client和Server通讯大略分为两类,相对应於二种基本X系统的操作模式:
1. server和client在同一部电脑执行,则它们彼此均可使用机器上任何
可用的方法做交互处理通讯(inter-process communication
(简称IPC)), 见图2-3
,在这种模式下,X可以像许多传统的视窗系统一样有效率
的操作。
┌??????????????????????????????????????????
│ p18 fig 2.3 │
│ │
│ 图 2-3 在相同机器上的 │
│ client和server │
└??????????????????????????????????????????
2. client在一部机器上执行,显示器和server则在另一部机器上,则
client和server的通讯必需透过网路利用彼此同意的协定(protocol)
方可。目前,最常见的协定为TCP/IP和DECnet,但其它任何被提供的
可信赖地协定亦可使用。图2-4 显示一个典型的Ethernet网路的通讯。
┌??????????????????????????????????????????
│ p18 fig 2.4 │
│ │
│ 图 2-4 在不同机器上的 │
│ client和server │
└??????????????????????????????????????????
这种透过网路,使得应用程式的操作,如同在本地机器一样的能力称
为网路透通性(network transparence),几乎是X独一无二的特性
(注1)。这种特性使得它非常适合建立在有弹性地多目标混合机器
网路上。
注1:有几种例如Sun Microsystems 的NEWS的视窗系统有使用到网路结构,
但没有一种被广泛地使用,而有超过一家以上的制造厂商使用它们。
因为client和server完全独立,一种名之为X-terminal 的新型态显示器
被发展出来。简单的说,X-terminal 是一种除了能直接在上面执行X server
程式外,什麽也没有的工作站,它有键盘,滑鼠和萤幕,以及一些和网路互相
通讯的方法(所以在其它主机上的client可在它上面显示),但并没有档案系
统,也不提供一般目的 (general purpose)的程式,一般目的的程式需要在网
路上执行。
kde或是gnome只是建立在X上的client端而已,负责把用户与X server之间的
交互罢了 |
|