X-Window系统介绍

作者:杨硕,华清远见嵌入式学院讲师。

一.X-Window系统简介

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

二.X-Window的发展历史

知晓过去才能明白现在,预见将来,我们需要清楚的了解X-Window的发展历史,尽管这有些曲折。

1、 前身:

事实上,早在X出现前已有几个位图式的软件显示系统已经存在,例如帕洛阿尔托研究中心(施乐公司)提出的Alto(1973年)和Star(1981年)、苹果计算机提出的Lisa(1983年)和麦金塔(1984年)、在UNIX世界也有雅典娜工程(1982年)和Rob Pike的Blit终端机(1984年)。
1983年之前称为W-Window系统的窗口系统是X的真正前身(在拉丁字母里面 X 直接接在 W 后面)。W-Window系统运行于系统V之上,W使用一个支持终端机和图形窗口的网络协议,而服务器维护显示的列表。

2、 起源:

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

3、版本发展历史

版本

发表日期

重大变更

X1

1984年6月

    首次使用"X"作为称呼;基金会自此将W与X区隔。

X6

1985年1月

    首版授权给若干的外部公司。

X9

1985年9月

    彩色化,以及首次以MIT授权方式发布。

X10

1985年后期

    开始能在IBM RT/PC、IBM PC AT(使用DOS操作系统)以及其他硬件上运行。

X10R2

1986年1月

 

X10R3

1986年2月

    首次在MIT之外发布。uwm使窗口管理员(Window Manager)程序标准化。

X10R4

1986年12月

    发布X10的最后一版。

X11

1987年9月15日

    首次发布现有X Window系统所用的协议(Protocol)。

X11R2

1988年2月

    以X协会(Consortium)之名的首次发布。

X11R3

1988年10月25日

    发布XDM。

X11R4

1989年12月22日

    XDMCP、twm成为标准的窗口管理员(Window Manager)程序,同时强化应用程序、发布Shape extension及新的字体。

X11R5

1991年12月5日

    发布PEX、Xcms(色彩管理功用)、字体服务器、X386。

X11R6

1994年5月16日

    发布ICCCM v2.0;Inter-Client Exchange(用户端间的交换);X Session Management(进程管理程序);X Synchronization extension(同步机制延伸程序);X Image extension(图像延伸程序);XTEST extension(XTEST延伸程序);X Input(输入用程序);X Big Requests;XC-MISC;变更XFree86。

X11R6.1

1996年3月14日

    发布X Double Buffer extension(双重缓冲延伸程序);X keyboard extension(键盘延伸程序);X Record extension(记录延伸程序)。

X11R6.2
X11R6.3
(代号:百老汇)

1996年12月23日

    发布Web功能功效、LBX。以X协会之名的最后一次发布。X11R6.2是X11R6.3的子集合(subset),X11R6.3只针对原有X11R6.1进行特点强化,如XPrint以及可以直书的Xlib,以及可由用户进行特性定义。

X11R6.4

1998年3月31日

    发布Xinerama。

X11R6.5

 

    X.org的一次内部发布,没有对外公开。

X11R6.5.1

2000年8月20日

 

X11R6.6

2001年4月4日

    修复错误、变更XFree86。

X11R6.7.0

2004年4月6日

    首次由X.Org基金会进行发布,此一发布新增了XFree86 4.4rc2。此外也有完整的末端用户的发行版本。移除XIE、PEX及libxml2

X11R6.8.0

2004年9月8日

    发布Window translucency、XDamage、分布式多头X、XFixes、Composite、XEvIE等。

X11R6.8.1

2004年9月17日

    修补libxpm的安全防护功效。

X11R6.8.2

2005年2月10日

    修补错误,更新驱动程序。

X11R6.9
X11R7.0

2005年12月21日

    发布EXA,主要的原始代码进行再拆解、组构,以相同的原始代码为基础,派生出模块化的7.0版以及一体性、团块性的6.9版。

X11R7.1

2006年5月22日

    强化EXA,集成Kdrive、AIGLX,强化操作系统及平台的支持性。

X11R7.2

2007年2月15日

    移除LBX。

X11R7.3

2007年9月6日

    XServer 1.4, Input hotplug, output hotplug (RandR 1.2), DTrace probes, PCI domain support.

X11R7.4

2008年9月23日

    XServer 1.5.1, XACE, PCI-rework, EXA speed-ups, _X_EXPORT, GLX 1.4, faster startup and shutdown.

X11R7.5

预计2009年6至9月

    XServer 1.7, XKB 2 and Xi 2, XGE, RandR 1.3 (GPU object), MPX, predictable pointer acceleration, DRI memory manager, DRI2, Shatter, further removal of obsolete libraries and extensions.

(注:X11协议设计由Scheifler领导,并在nascent Internet的开放邮件列表上广泛讨论。于是X成为最早的较大规模的开源软件项目之一)

4、 对X-Window的管理历史

1)MIT X协会与X协会公司

1987年,随着X11取得明显成功,MIT希望免除X的管理责任。但是1987年6月与9个厂商举行会晤,这些厂商表示他们相信为了避免 X 由于商业因素而分裂,需要中立方的参与。1988年1月,X协会(X Consortium)做为非营利厂商团体而成立,由Scheifler担任主管,而Keith Packard担任高级开发人员,确保 X 能持续以中立超然的立场提供商业与学术教育所需的开发。1993年,X协会公司(X Consortium, Inc.;非营利性质的公司)做为MIT X协会的接继者而成立

2)开放团体

1997年中,X Consortium将X的管理交给开放团体(The Open Group),而它是1996年由开源软件基金会(Open Software Foundation;OSF)和X/Open合并成立的厂商团体。

3)X.Org

1999年5月开放团体组建了X.Org。X.Org指导了X11R6.5.1之前的版本发布。在此期间X的开发死气沉沉。2003年,随着Linux的流行X被大量安装。但是X.Org几乎无声无息,活跃的开发由XFree86承担。

4)XFree86

在1989年至1990年期间,托马斯?罗尔把X11R4分类器上提供的X服务器程序的源代码下载到运行速度仅为33MHz的386PC 上,成功运行了被他称为是X38611.1的X服务器。这就是XFree86的雏形。

1992年后多数技术创新都发生在XFree86项目中。1999年,由于众多对于XFree86在Linux上应用有兴趣的硬件厂商的推动,并也已经成为最普及的X版本,XFree86成为X.Org的荣誉成员(不付费)。

但是自2003年开始,XFree86内部却发生了争论。它被认为太教堂式了,如同它的开发模式;开发者不能通过CVS做提交,而厂商被迫维护大量补丁。2003年3月,自从最初的MIT X Consortium结束之后就参加XFree86的Keith Packard由于被认为态度不良而被驱逐

X.Org和XFree86开始讨论能够有助于X开发的重组Jim Gettys早在2000年就热心于开放的开发模式。Gettys、Packard和其他几个人开始讨论有效管理X和开放式开发的细节。

最终就像是X11R6.4许可证争议的回响,XFree86于2004年2月在更加严格许可证下发布了4.4 。许多依赖X的项目认为该许可证无法接受,特别是它和GNU General Public License不兼容。 这引起一场论战,许多人认为到了该对XFree86分叉(fork)的时候了,许多Linux发行版,包括Fedora、Gentoo都纷纷在最新的版本中使用X.Org基金会的发布代替XFree86。

5)X.Org基金会

2004年年初X.Org基金会成立。这意味着 X 在管理上的根本转变。1988年以来 X 的管理者(包括过去的X.Org)都是厂商组织,而基金会由软件开发者领导,采用依靠外部参与的集市模式的社区开发。其成员身份对个人开放,法人成员则成为赞助者。X.Org还开始同freedesktop.org密切合作

三.X的设计原则

X的设计原则,早在最初仍在麻省理工学院的阶段(1984年)就已经成形,由Bob Scheifler和Jim Gettys两人制订出X最早的开发、强化、改进原则,原则大体如下:
1、除非没有它就无法完成一个真正完整的应用程序,否则不用增加新的功能。
2、决定一个系统不是什么和决定它是什么同样重要。与其去适应整个世界的需要,宁可使得系统可以扩展,如此才能以持续兼容的方式来满足新增需求
3、只有完全没实例时,才会比只有一个实例来的糟。
4、如果问题没完全弄懂,最好不要去解决它
5、如果可以通过10%的工作量得到90%的预期效果,应该用更简单的办法解决。
6、尽量避免复杂性。
7、提供机制而不是策略,有关用户界面的开发实现,交给实际应用者自主。(这和驱动开发的思想一脉相承)

之后,上述原则中的第一项原则在设计X11时被加以修改,修订成:“除非已有真正的应用程序,真的需要X为其修订、增订等支持,否则不会为X增加新功能。”X基本上一直遵循这些原则,参考实现的扩展及改进也是以此原则的角度来着手,也因为奉行上述原则,使至今的最新版X仍能与最初(1987年)发布的协议标准近乎完全兼容。

这些原则性的东西短短几句话,就为一个庞大项目奠定了一个良好的基调和发展方向,使X问世以来经久不衰,没有这几个原则是做不到的。

四.X-Window的功能

注:这部分内容转载自http://blog.csdn.net/absurd/category/336948.aspx
        作者E-mail:[email protected]

X-Window提供了一组非常底层的服务,客户端程序发送请求给X-Window, X Window根据请求完成相应服务。通过这些服务,客户端程序可以构建期望的用户界面。根据不同的功能,可以把这些服务分为以下几大类:

1、处理输入

X-Window从键盘和鼠标接受输入,这些输入数据被当作”事件”传送给适当的客户端程序。至于哪个窗口应该接受到这些事件,是依赖于窗口管理器的(窗口管理器实际上也是一个客户端),典型的事件包括按键,鼠标移动,鼠标按下/放开等。

输入设备往往是与硬件平台相关的,而且又是独占资源,所以用X-Window管理是理所当然的。应用程序通常不需要关心具体的设备,只要处理相应的事件就行了,像mouse和笔点可能发出同样的事件,而应用程序不用区分它们。输入事件也可以通过XTest扩展,由软件模拟出来的(通常用来实现软件键盘)

2、按层次形组织窗口

X-Window提供服务让客户端程序创建/销毁窗口,所谓的窗口就是屏幕上的矩形区域,它是可以层层嵌套的,有很多操作可以作用于窗口(如,查询或改变窗口的大小和位置等),X-Window的主要功能之一就是负责管理这种按层次形组织的窗口。

不过X-Window管理这些窗口是被动进行的,由窗口管理器根据用户的行为决定。它请求X-Window做相应的动作,比如移动窗口,调整窗口的大小,改变窗口的前后关系等等。第一次接触X-Window时,得知窗口管理器是一个普通的客户端时,我觉得惊讶,这种设计真是太先进了,其实它正是遵循了提供机制而不是策略这一原则。

现在已经有很多窗口管理器的实现可用,它们提供不同的风格和功能,有的用于PC,有的用于嵌入式系统,像matchbox就是在嵌入式上比较流行的,像Nokia的N770/N800就是用的matchbox。

3、提供图形操作

X-Window提供了一些基本的画图操作,如画直线、矩形、圆弧和多边形等。 这些图形的颜色、线宽、填充类型都可以由客户端程序指定。X-Window同时提供了许多位图操作,这些位图操作可以作用于了窗口的各个区域。

X-Winwod还会充分挖掘硬件的加速特性,像填充、画直线和图像叠加等操作,如果硬件支持相应的加速功能,就可以通过硬件实现,否则就用软件实现。

4、提供文本和字体操作

X-Window提供了字体相关的操作。客户端程序可以请求X-window在指定的区域用指定的字体显示指定的字符串,当然在此之前应该请求X-window加载字体,加载后客户端程序可以得到关于字体的一些信息。

实际上,这一功能由于客户端字体绘制的流行,而大大弱化了,现在的字体差不多都是在客户端绘制好后,再通过X Render扩展显示到X-Window去的。在fontconfig/freetype/pango/cairo的帮助,在客户端绘制字体更容易使用。

 

名词解释:

位图:

位图(Bitmap),又称光栅图(Raster graphics),是使用像素阵列来表示的图像,每个像素的色彩信息由RGB组合或者灰度值表示。根据颜色信息所需的数据位分为1、4、8、16、24及32位等,位数越高颜色越丰富,相应的数据量越大。其中使用1位表示一个像素颜色的位图因为一个数据位只能表示两种颜色,所以又称为二值位图。通常使用24位RGB组合数据位表示的的位图称为真彩色位图。

视窗系统:

视窗系统(Windowing system) 是“使用视窗当作它的主要象征之一”的 图形使用者接口的构成元件。更为明确的说,是桌面环境的构成元件。视窗系统支撑着视窗管理员的实现(implementation);对于“图像硬件(graphics hardware)、指向装置(pointing devices)比如鼠标与键盘等装置”提供基本支持。绘制鼠标光标,一般也与视窗系统相关。

从程式设计师的观点来看,视窗系统是作出绘图的基本单位,比如字型绘制,或是在屏幕上划线,有效地提供绘图硬件的一种抽象概念。

视窗系统能让电脑使用者同时与数个程式一起工作。每个程式在他自己的视窗中执行,也就是屏幕上的矩形之中。大部份的视窗系统允许视窗重叠,且提供使用者执行标准的操作,像是移动/改变视窗尺寸,把视窗送到前景/背景,和最小化/最大化一个视窗。

有些视窗系统,像是 X,有先进的能力比如网络通透性,允许使用者在远端机器上执行图形的应用程式。

雅典娜工程:

雅典娜工程是MIT、DEC以及IBM的一个联合工程,历时八年,于1991年6月30日告一段落。该工程意图建立一个计算机环境,容纳多达一万台工作站,以及各种硬件。用户可以访问其中的任何工作站,存取任何文件、程序,但在用户界面以及服务传递上,看起来不会有大的区别。

这个工程产生了许多现在被广为使用的技术,比如X Window System、Kerberos。雅典娜工程开发的其他技术包括Xaw部件工具箱、Zephyr通知服务、第一个即时通讯服务,以及Hesiod名,还有目录服务。

你可能感兴趣的:(X-Window系统介绍)