王朝百科
分享
 
 
 

X Window

王朝百科·作者佚名  2010-02-05  
宽屏版  字体: |||超大  

基本概念

X窗口,X Windows图形用户接口 X Window

X Window于1984年在麻省理工学院(MIT)电脑科学研究室开始开发的,当时Bob Scheifler正在发展分散式系统(distributed system),同一时间 DEC公司的 Jim Gettys 正在麻省理工学院做 Athena 计划的一部分。两个计划都需要一个相同的东西——一套在UNIX机器上运行优良的视窗系统。因此合作关系开始展开,他们从斯坦福(Stanford)大学得到了一套叫做W的实验性视窗系统。因为是根据W视窗系统的基础开始发展的,当发展到了足以和原先系统有明显区别时,他们把这个新系统叫做X。

考虑到开发人员,x窗口为开发基于图形的分布式应用程序提供软件工具和标准应用程序编程接口。完成的应用是与硬件无关的,这意味着它们可以在支持x窗口环境的任何系统上运行。完整的这种环境通常被简单地称为“X”。

X窗口系统在位映射屏幕上的一个或多个窗口中运行程序。用户可以在每个窗口同时在系统上运行多个程序,并且通过用鼠标器点击它们来在窗口之间进行交换。图X-4示意了一个X窗口环境,并将在下面讨论:

称为x服务器的程序在本地工作站上运行,并且管理它的窗口和程序。

每个程序窗口都被称为x客户,并且与在同一个机器上运行的x服务器程序以客户机/服务器关系进行交互。

X服务器处理所有X客户的处理程序,以及通过消息传递系统和其它客户交互工作。X服务器控制整个本地环境,因而当访问存储器和其它系统资源时,程序间进行合作。

X服务器运行x窗口管理器程序,这个程序提供GUI界面。现在可以使用两种窗口管理器:Motif和Open Look。它们在功能上是类似的,并且运行相同的程序。

在本地机器运行的x服务器可以和远程计算机上运行的程序进行交互,并且在本地窗口显示这些程序的输出。它是一种客户机/服务器的关系,但是本地服务器具有全权控制,并且远程进程被称为客户机,而不是服务器,这是因为它们是处于这个本地的x服务器的控制之下的。

在Internet和其它广域网环境,上面最后一点是非常重要的。用户可以对运行在远程计算机上的程序进行工作。这个远程程序在它需要经常访问的资源(如磁盘数据)附近运行。只有需要修改用户屏幕的信息才被通过远程链路进行传输,从而避免了将整个程序和它的数据都传输到本地系统进行处理时可能出现的瓶颈。

X服务器和远程X客户机之间的接口是面向事件的,并且是基于X协议的。这种协议在传输控制协议/Internet协议(TCP/IP)之上运行。在一些情况下,一些厂商通过增加象三维图象这样的功能来增强了X窗口环境。X窗口环境的一个优势是,服务器应用程序可以在任何平台上运行,并且这个应用程序可以在公用运输协议之上与这个客户机交换一组消息。于是,开发人员就可以在许多系统上建立X窗口-认可的应用程序,并且这些应用程序可以被任何支持X窗口的工作站访问。

X窗口是开放软件基金会(OSF)的Motif和Open Look系统的用户接口。SunSoft的Solaris2操作系统也实现了由AT&T开发的X窗口实现。

X Window的历史

工作持续地进行,新的版本(version)不断地产生(当软件和前一版不相容时,新的版本便产生了)。在1985年。制定了任何人只要付版权费便可使用X的授权许可。以下为一些最近的记事:

第10版:1985年底。直到此时,在MIT以外的人和组织,才开始对X有实质的贡献。

第一套商业化的X产品DEC于1986年1月推出 VAXstation-II/GPX。

第10版第3次发行:1986年 2月。从此时起,X开始流传于世,人们把它移植到许多新的系统上。

第10版第4次发行:1986年11月。

1987年 1月在MIT举办第一次X技术会议。

在1986年,第10版X无法满足所有的需求已非常明显。MIT 和 DEC便从事于完整协议(protocal)的重新设计。这就是X第11版(这就是所谓的X11)。

第11版第 1次发行:1987年 9月。

X协会成立:MIT X协会成立的目的是为了研究发展及控制标准。

第二次X技术会议:1988年 1月。

第11版第 2次发行:1988年 3月。

第11版第 3次发行:1988年10月。

严格地说,X Window系统并不是一个软件,而是一个协议(protocal),这个协议定义一个系统成品所必需具备的功能(就如同 TCP/IP, DECnet 或IBM的 SNA,这些也都是协议,定义软件所应具备的功能)。任何系统能满足此协议及符合X协会其他的规范,便可称为X。

X的基本部件

X系统不像早期的视窗系统是把一堆同类软件集中在一起,而是由3个相关的部分组合起来的。

(1)Server(服务器)

Server是控制显示器和输入设备(键盘和鼠标)的软件。Server可以创建视窗,在视窗中画图形和文字,回应Client程序的“需求”(requests),但它不会自己动作,只有在Client程序提出需求后才完成动作。

每一套显示设备只对应一个惟一的Server,而且Server一般由系统的供应商提供,通常无法被用户修改。对于操作系统而言,Server只是一个普通的用户程序而已,因此很容易更换新的版本,甚至是第三方提供的原始程序。

(2)Client(用户端)

Client是使用系统视窗功能的一些应用程序。在X下的应用程序称做Client,原因是它是Server的客户,要求Server回应它的需求完成特定的动作。

Client无法直接影响视窗或显示,它们只能送一个请求(request)给Server,由Server来完成它们的请求。典型的请求通常是“在某个视窗中写‘Hello World’的字串”,或者从A到B划一条直线。

Client的功能大致可分为两部分:向Server提“需求”只是它的一部分功能,其他的功能是为用户执行程序而准备的。例如输入文字信息、作图、计算等等。通常,Client程序的这一部分是和X独立的,它对于X几乎不需要知道什么。通常,应用程序(特别是只大型的标准绘图软件、统计软件等)对许多输出设备具有输出的能力,而在X视窗中的显示只是Client程序许多输出格式中的一种,所以,Client程序中和X相关的部分在整个程序中只占非常小的一部分。

用户可以通过不同的途径使用Client程序:通过系统提供的程序来使用;使用来自于第三方的软件;或者是用户自己为了某种特殊应用而编写自己的Client程序。

第一次接触X Window系统的用户很容易混淆X Window系统中的客户机/服务器的概念,他们会认为X Window下的客户机/服务器的概念与普通网络中的客户机/服务器的概念不太相同。通常的观念中,用户使用客户工作站,使用远程服务器提供的文件或显示服务,而在X Window下,用户使用X服务器进行操作,而客户程序可以运行在本地或者远程电脑上。

如果进一步理解,就会了解客户/服务器的概念指的是具体运行的进程,而非电脑或用户。不是与用户联系最密切的电脑就是客户,而是首先要明确服务资源,然后再以资源提供者和资源占用者来进行区分。在一般的客户/服务器方式的应用中,一般是客户程序直接与用户交互,因此就容易造成错误的概念,以用户为中心来区分客户和服务器。

但在X Window下,服务资源为X服务器的显示提供处理能力,X客户程序要显示图形图像,但它不能直接控制显示硬件,只能使用用户面前的X服务器提供的显示资源。同样它也不能接受用户输入,也只能使用X服务器控制的键盘或鼠标资源来接受输入。在这里,X服务器是硬件的控制者,X客户只是单纯的执行程序,只能使用X服务器提供的服务进行输入输出。如图7-1所示。

X服务器(X Server)是一个管理显示的进程,必须运行在一个有图形显示能力的电脑上。理论上,一台电脑上可以同时运行多个X服务器,每个X服务器能管理多个与之相连的显示设备。

X客户程序(X Client)是一个使用X服务器显示其资料的程序,它可以运行在与X服务器不同的电脑上。

X协议(X protocol)是X客户程序和服务器进行通信的一套协定,X协议支持网络,能在本地系统中和网络实现这个协议,支持的网络协议有TCP/IP, DECnet等。

X的这种任务划分有几个优点:

客户程序可以在远程电脑上执行计算任务,而使用的X服务器仅负责复杂的图形显示,充分发挥X服务器在显示上的优势。

只有X服务器与硬件打交道,所有的客户程序都与硬件无关,这很容易在不同的平台上移植。

客户程序可以在不同的电脑上运行,从巨型机到个人电脑,从而充分发挥网络计算的优越性。

尽管每个X客户程序都可以对整个屏幕范围进行显示操作,但标准的做法是先创建一个显示视窗,此后客户程序的所有显示都相对于这个视窗进行操作。这样在同一屏幕内就能同时显示多个独立的客户程序,通过对视窗的管理在不同的程序之间进行切换。每个视窗应该位于屏幕的哪个位置、何时显示、何时隐藏,以及视窗的标题、四周如何显示等,这些都不应该由产生这个视窗的客户程序自己控制和维护,否则就不能达到简化设计的目的。X Window并没有自己实现这些任务,在X的设计原则中,这些代表 GUI风格的任务仍然是客户程序的任务,因此X将管理视窗的任务给予了一个特殊客户程序——视窗管理器,使用不同的视窗管理器会使X Window的外观看起来截然不同。

X系统只负责显示图形,并不限制显示和操作的风格,因此不同的X Window的风格并不相同,用户可以根据自己的喜好进行选择。

在X Window上,所有的视窗形成了一个树状结构。X Window的视窗管理程序运行在根视窗上,所有的其他视窗为根视窗的子视窗,而其他视窗上也有相应的按钮、对话框等元件,这些是它的子视窗。如图7-2所示。

由于X Window系统只提供了最基本的系统调用,而具体的视窗都有很多共性,因此要开发X应用程序,应该首先使用开发工具包,而没有必要直接使用最基本的X Window 的系统调用,以简化编写程序的工作量。不同的公司或组织开发了各种工具包来提供创建和管理具体视窗的构件,例如Motif套件、OpenLook套件等。每种套件都提供了菜单、按钮、对话框等图形接口的标准构件,还提供基本的视窗管理器。使用不同套件开发的程序,其显示风格也不相同,因此就在不同程序之间形成了不同的GUI风格。Motif和Openlook 就是两种不同的图形接口风格,当前Motif成为了商业X Window的一个标准,很多商业软件均基于Motif进行开发,而Openlook则没有获得更普遍的支持。

(3)通信通道

有了Server和Client,它们之间就要传输一些信息,这种传输信息的媒介就是我们所要介绍的X的第3个组成部件:通信通道。凭借这个通道,Client传送“需求”给Server。而Server回传状态(status)及其他一些信息给Client。

Client是通过函数库来使用通信通道的。在系统或网络上支持通信形态需求的是内建于系统的基本的X视窗函数库(library)。只要Client程序利用了函数库,自然就有能力使用所有可用的通信方法。这时通道本身就变得不再重要了,而只是一个概念而已。

Server和Client之间的通信

Server和Client通信的方法大致有两类,对应于X系统的两种基本操作模式。

第一类,Server和Client在同一台机器上执行,它们可以共同使用机器上任何可用的通信方法做互动式信息处理。在这种模式下,X可以同其他传统的视窗系统一样高效工作。

第二类,Client在一部机器上运行,而显示器和Server则在另一部机器上运行。因此两者的信息交换就必须通过彼此都遵守的网络协议进行,最常用的协议为TCP/IP。这种通信方式一般被称为网络透明性,这也几乎是X独一无二的特性。

X的用户接口

X的设计目标之一就是能创建许多不同形式的用户接口。其他的是视窗系统提供具体的交互方法,而X只提供一般的架构,让系统创建者建造所需的交互风格。这种特性使得开发者可以在X的基础上建造全新的接口,并且可以在任何时刻根据自己的需要选用适当的接口。

一般来说,用户接口可以分为两部分。管理接口也就是视窗管理器,是命令的最高层,它负责在屏幕上建构或重建视窗,改变视窗的大小、位置,或者将视窗改变成图示等。

应用接口确定了用户和应用程序之间的交互风格,即用户如何利用视窗系统的设备程序来控制应用程序并输入资料给它。例如,如何用鼠标来选定一个选项。

X独立于操作系统

X不是内置于操作系统,它只是比用户层次稍高一些。在系统中也是一个相对独立的元件。这样做有如下优点:

l 易于安装和改版,甚至去除。这种工作不需要重启系统,也不会对其他应用程序造成干扰。

l 第三方很容易支持并加强它的功能。例如你的制造厂商提供的系统不够好,你可以向别人买更好或更快的版本。

l X不会制定操作系统,因此成为一种标准,这也是第三方发展软件的原动力。

l 为了开发者。在Server上进行工作时,如果程序异常中断,只会影响到视窗系统,不会造成机器的损坏或操作系统内核的破坏。

 
 
免责声明:本文为网络用户发布,其观点仅代表作者个人观点,与本站无关,本站仅提供信息存储服务。文中陈述内容未经本站证实,其真实性、完整性、及时性本站不作任何保证或承诺,请读者仅作参考,并请自行核实相关内容。
如何用java替换看不见的字符比如零宽空格​十六进制U+200B
 干货   2023-09-10
网页字号不能单数吗,网页字体大小为什么一般都是偶数
 干货   2023-09-06
java.lang.ArrayIndexOutOfBoundsException: 4096
 干货   2023-09-06
Noto Sans CJK SC字体下载地址
 干货   2023-08-30
window.navigator和navigator的区别是什么?
 干货   2023-08-23
js获取referer、useragent、浏览器语言
 干货   2023-08-23
oscache遇到404时会不会缓存?
 干货   2023-08-23
linux下用rm -rf *删除大量文件太慢怎么解决?
 干货   2023-08-08
刀郎新歌破世界纪录!
 娱乐   2023-08-01
js实现放大缩小页面
 干货   2023-07-31
生成式人工智能服务管理暂行办法
 百态   2023-07-31
英语学习:过去完成时The Past Perfect Tense举例说明
 干货   2023-07-31
Mysql常用sql命令语句整理
 干货   2023-07-30
科学家复活了46000年前的虫子
 探索   2023-07-29
英语学习:过去进行时The Past Continuous Tense举例说明
 干货   2023-07-28
meta name="applicable-device"告知页面适合哪种终端设备:PC端、移动端还是自适应
 干货   2023-07-28
只用css如何实现打字机特效?
 百态   2023-07-15
css怎么实现上下滚动
 干货   2023-06-28
canvas怎么画一个三角形?
 干货   2023-06-28
canvas怎么画一个椭圆形?
 干货   2023-06-28
canvas怎么画一个圆形?
 干货   2023-06-28
canvas怎么画一个正方形?
 干货   2023-06-28
中国河南省郑州市金水区蜘蛛爬虫ip大全
 干货   2023-06-22
javascript简易动态时间代码
 干货   2023-06-20
感谢员工的付出和激励的话怎么说?
 干货   2023-06-18
 
>>返回首页<<
 
 
 
静静地坐在废墟上,四周的荒凉一望无际,忽然觉得,凄凉也很美
© 2005- 王朝网络 版权所有