请输入您要查询的百科知识:

 

词条 X Window
释义

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

简介

X Window系统X Window System,也常称为X11X)是一种以位图方式显示的软件窗口系统。最初是1984年麻省理工学院的研究,之后变成UNIX、类UNIX、以及OpenVMS等操作系统所一致适用的标准化软件工具包及显示架构的运作协议。X Window系统通过软件工具及架构协议来建立操作系统所用的图形用户界面,此后则逐渐扩展适用到各形各色的其他操作系统上。现在几乎所有的操作系统都能支持与使用X。更重要的是,今日知名的桌面环境——GNOME和KDE也都是以X Window系统为基础建构成的。

由于X只是工具包及架构规范,本身并无实际参与运作的物理,所以必须有人依据此标准进行开发撰写。如此才有真正可用、可运行的物理,始可称为实现体。目前依据X的规范架构所开发撰写成的实现体中,以X Org最为普遍且最受欢迎。X Org所用的协议版本,X11,是在1987年9月所发布。而今最新的参考实现(参考性、示范性的实现体)版本则是X11 Release 7.5(简称:X11R7.5),而此项目由X Org基金会所领导,且是以MIT授权和相似的授权许可的自由软件。

研发

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

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

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

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

每个程序窗口都被称为x Server,并且与在同一个机器上运行的x Server程序以C/S进行交互。

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

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

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

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

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

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

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的基本部件

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

Server(服务端)

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

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

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程序来使用。

C/S(客户端/服务端)的概念

第一次接触X Window系统的用户很容易混淆X Window系统中的C/S的概念,他们会认为X Window下的C/S的概念与一般网络中的C/S的概念不完全相同。通常的解释中,用户利用客户端,使用远程服务端提供的文件或显示服务,而在X Window下,用户使用X服务端进行操作,而客户端可以运行在本地或者远程电脑上。

如果进一步理解,就会了解C/S的概念指的是具体运行的进程,而非电脑或用户。与用户联系最密切的主机不一定就是客户端,而是首先要明确服务资源,然后以资源提供者和资源使用者来区分。在通常的C/S应用中,一般是客户端直接面向用户,因此就容易混淆概念,以为是以用户为中心来区分客户端和服务端的。

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

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

X客户端(X Client)是一个使用X Server显示其资源的程序,它与X服务端可以运行在不同主机上。

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

X任务划分特点

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

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

只有X Server服务端与硬件打交道,所有的客户端都与硬件无关,这让不同的平台上的移植变得很容易。

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

尽管每个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则没有获得更普遍的支持。

通信通道

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

Client是通过函数库来使用通信通道的。在系统或网络上支持通信形态需求的是内建于系统的基本的X Window函数库(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上进行工作时,如果程序异常中断,只会影响到视窗系统,不会造成机器的损坏或操作系统内核的破坏。

X的用户界面

X刻意不去规范应用程序在用户界面上的具体细节设计,这些包括按钮、菜单和窗口的标题栏等等,这些都由窗口管理器(window manager)、GUI构件工具包、桌面环境(desktop environment)或者应用程序指定的GUI(如POS)等等的用户软件来提供,然而因为架构设计上保留了高度的弹性发挥空间,致使多年来X在“基础、典型、一般性”的用户界面上,也都有数目惊人的多样性选择。

在X的系统架构中,窗口管理器用于控制窗口程序的位置和外观,其界面类似Microsoft的Windows或者Macintosh(例如:KDE的KWin或者GNOME的Metacity),不过在控制机制上却截然不同(如:X提供的基本窗口管理器twm)。窗口管理器可能只是个框架(如:twm),但也可能提供了全套的桌面环境功能(如:Enlightenment)。

虽然不同的X用户界面可以有很大的差异,然而绝大多数的用户在使用X时,多是用已经打包的桌面环境,这种桌面环境不仅包含窗口管理器,还具备各种应用程序以及风格一致的界面,目前最流行的桌面环境是GNOME和KDE,二者已普遍应用于Linux操作系统上,而UNIX所用的标准桌面环境多是通用桌面环境CDE,然而有些UNIX也开始采用GNOME。

此外,X桌面环境及组件虽然很多,但同时也需要保持兼容性与互通性,这些由freedesktop org积极与努力地维持各种不同X桌面环境的兼容性,使竞争态势下仍不失X的兼容本色。

X的局限性和对X的负面评价

在《UNIX痛恨者手册》(UNIX-HATERS Handbook)一书中有个章节为:"X Window所造成的灾祸(The X-Windows Disaster)",该书用此整个章节的篇幅内容来讨论X在20世纪80年代末到同世纪90年代初的问题与困扰。

视频硬件

PC

在PC世界里,需要第三方硬件驱动的非主流的个人计算机软件往往不能支持那些专为Microsoft Windows出品的设备。X Window也不例外,它的实现往往缺少较新(或者非常旧)的高效的显卡驱动。

在X org和XFree86这样的开源X中,开发社区通过复用已有代码,可以很快更新改进驱动程序,从而能够为较旧的或者通用的硬件开发出高质量的驱动。

图形高效运算是目前顶级的图形功能,一般由厂家通过专有驱动来实现,而且往往会优先考虑Windows(最大的消费市场)。由于高性能视频市场的显赫地位,一些硬件/驱动厂商会考虑通过将技术细节变为商业秘密或者将其中的创新申请专利,而这阻碍了开源驱动程序的实现。

在PC机之外的其他设备,很多X应用是为非传统设备如PDA和手机编写(或者移植)的。这样的实现必须提供为在此之上运行的平台提供至少且必须的设备支持。

性能 X Window的C/S体系(C/S架构)设计在应用程序和显示硬件之间多加了一层软件,导致绘图效率下降,所以引起了一些批评。因此开发了若干扩展,在设备和客户机在同一个系统上时,通过在取得适当许可的情况下,以直接访问设备来改善这一问题。而在Linux上,一些显卡驱动已经部分移入内核以提高效率。

稳定性 另一方面,X也被批评提供了过多的对硬件的直接访问,从而影响了系统的稳定性。行为不良的显卡驱动(有时也可能是应用程序)可能导致整个系统的崩溃或重启;有时即使操作系统仍在工作,也不能继续渲染显示效果(这时除了重启,缺乏好的恢复手段)。

根本上,目前所有的桌面GUI操作系统都提供某种对硬件的直接访问,支持者认为市场已经证明了为了提供图形功能牺牲一点稳定性是值得的。或许将来随着技术和用户的演化这一平衡会有所变化。

用户界面特征

X刻意不去规范用户界面和程序之间大多数的通信,导致出现了许多非常不同的界面,同时造成程序之间协同的困难;而客户机之间的互操作规范ICCCM以难以正确实现而闻名。后来的标准化尝试,如Motif和CDE,也于事无补。长久以来这已经成为用户和程序员的噩梦。目前,程序的感观一致性和通信一般是通过为特定桌面环境或者构件工具箱编程来处理,这也避免了直接和ICCCM接触。

X缺乏良好的网络与透明的音效系统。当用户对音效日益期盼时,各种不兼容的音效子系统便出现了。过去,大多数程序员只好忽略网络问题,简单地使用本地操作专用的音效API。第一代客户端-服务端音效系统有rplay和Network Audio System。而最近的努力产生了EsounD(GNOME)和ARts(KDE),而这也并非标准。而其他系统如Media Application Server则正在开发当中。

直到最近,X也没有好地解决显示与打印机所打印的内容一致性(所见即所得)的解决方案。许多X客户机完全用PostScript实现打印,而这与发送到服务端的几乎是分离的。从X11R6.3起包含了Xprint,此时客户端已经不错,但是服务器实现还不行。而从X11R6.8起实现的质量已经很好,并且获得了组件支持。

网络

X不能像VNC那样把客户端的通信从一个服务端卸下然后再附加到另一个上,但现在正在为X增加此功能的工作,另外还要实现通过VNC实现X Server的显示。

X Server和远端客户机之间的网络通信使用明文的缺陷,让攻击者使用封包截取程序就能够截获和阅读它。这一缺陷一般可以通过在SSH通信上使用X来解决。

设备中立和客户端与服务端的分离还带来了一定开销。X的网络透明性要求客户机和服务器分别运行。在其早期,与同时期采取窗口系统嵌入操作系统这一方法的Microsoft Windows和Mac OS比较,这给独立系统的性能带来明显的影响。为了获得可接受的性能,推荐起码要保留4到8MB的RAM,但在1990年之前,这被认为与Windows或者Mac OS相比太耗资源了。

当前版本的Windows和Mac OS X Quartz也包含了和X的C/S相类似的子系统划分,其性能和资源需求同X加上KDE或者GNOME也类似。现在主要的消耗来自于客户机和服务器之间的网络延迟(非协议本身产生的滞后时间),应该通过应用程序的设计来改善。

X的竞争者

X在类UNIX系统上几乎完全占据统治地位。但是仍然有人尝试提供替代品和更多的选择。过去曾经有Sun的NeWS,但它遭到市场淘汰;还有NeXT的Display PostScript,它最终转变为苹果电脑的Mac OS X内的Quartz。

应对对于X的批评的更前卫的尝试有Berlin/Fresco和Y Window System这样的完全替换。这些代用品被认为不值得采用,而任何不能做到与X向后兼容的的替代品的可行性都被广泛置疑。

其他有的竞争者通过直接操作硬件来避免X的开销,这样的项目包括DirectFB。但是由于DRI正在致力于使用可靠的内核级接口提供帧缓冲,这些努力可能变成是多余的。

其他以图形终端服务形式达到网络透明性的尝试还有VNC(很底层的系统,通过网络发送压缩的位图;UNIX上的实现包括X Server)、Citrix MetaFrame(类似X的Windows软件)、Tarantella(为网络浏览器提供Java客户机)和NX技术(用于远程显示的节省带宽的协议)。

随便看

 

百科全书收录4421916条中文百科知识,基本涵盖了大多数领域的百科知识,是一部内容开放、自由的电子版百科全书。

 

Copyright © 2004-2023 Cnenc.net All Rights Reserved
更新时间:2024/12/23 20:47:43