X Window系统(X11)

由网友(潇湘夜雨笛悠悠)分享简介:X Window体系即X一一,是1种位图显示的望窗体系,是正在Unix、类Unix和OpenVMS等操做体系上成立图形用户界面的尺度东西包以及和谈,降生于一九八四年的麻省理工教院,首创人是Bob Scheifler以及Jim Gettys。X Window体系的客户步伐可以长途节制电脑履行计较使命,使该体系充实阐扬了X办事...

X Window系统即X11,是一种位图显示的视窗系统,是在Unix、类Unix以及OpenVMS等操作系统上建立图形用户界面的标准工具包和协议,诞生于1984年的麻省理工学院,创始人是Bob Scheifler和Jim Gettys。

Linux图形系统框架 与 X协议 X11 XFree86 Xorg X Window WM

X Window系统的客户程序可以远程控制电脑执行计算任务,使该系统充分发挥了X服务器在显示上的优势。

创始人

Bob Scheifler、Jim Gettys

别称

X视窗系统

外文名

X Window System

出现时间

1984年

中文名

X11

系统概述

X 仅为 GUI 环境构建提供了基本的框架,在屏幕上绘图和移动窗口,以及与鼠标和键盘交互。X 并没有定义 UI 的呈现方式 — 独立的客户程序窗口管理器处理这部分功能。正因为如此,以 X 为基础环境的视觉样式变化非常地多,不同的程式可能彻底地展现不同的界面。X 以 " 网路通透性" 为特色:应用程序("客户端" 应用程序)所执行的机器,不一定是使用者本地的机器(显示的 "服务端")。X 的 " 客户端 " 和 "服务端 " 字眼的使用与人们通常的认识不太相同," 服务端" 是使用者本地的显示而不是远端的机器。 X 在 1984年起始于 MIT(麻省理工学院) 。这个协定版本——X11,是在 1987年9月 所提出的。该方案是由 X 基金会所领导,这个参考实作是版本 11 release 7.6,且在 MIT 执照和相似的表示许可执照下是自由软件 。

X模式

详见: X Window系统的协议和架构 X基于客户端——服务器 模型。一个X服务器与多个客户端程序通讯。服务器接受对于图形输出(窗口)请求并反馈用户输入(键盘、鼠标、触摸屏)。服务器可能是一个能显示到其他显示系统的应用程序,也可能是控制某个PC的视频输出的系统程序,还可能是特殊硬件。 术语客户端-服务器——你的终端是"服务器",而应用程序是 "客户端"——这一概念经常困扰X的新用户,因为看起来似乎正好相反。但X采纳了应用程序而非最终用户或者硬件的视角:本地的X显示程序提供显示服务,所以它扮演了服务器;远端应用程序使用了该服务,所以它是客户端。 运行在用户的工作站上,而从该用户的计算机上控制的一个系统更新软件运行在远端服务器上。注意,这个远端程序运行时好像就在本地一样。 服务器与客户端之间的通信协议的运作对计算机网络是透明的: 客户端和服务器可以在同一台计算机跑,也可以不是, 或许其计算机系统结构和操作系统也不同,但都能运行。客户机和服务器还能够使用安全连接上在互联网 上计算机安全地通讯。 为了使远端客户程序显示到本地服务器,用户一般需要启动一个终端模拟器和到达远端计算机的 telnet 或者ssh ,令其显示到用户计算机,(例如在运行bash的远端计算机上export DISPLAY=[用户的计算机]:0)然后启动客户端。 然后客户端就会连接到本地计算机,而且远端应用程序会显示到本地屏幕并被本地输入设备所控制。与之对应,本地计算机上也可以执行一个连接到远端计算机的小助手程序并在那里启动期望的应用程序。 实际的远端客户端的例子有:图形化管理远程计算机;在远端Unix计算机上运行计算密集的仿真程序并将结果显示到本地的Windows桌面计算机; 以一套显示器、键盘和鼠标控制同时运行在多台计算机上的图形化软件。

设计原则

1984年,Bob Scheifler和 Jim Gettys 制订了X的早期原则:

- 除非没有它就无法完成一个真正完整的应用程序,否则不要增加新的功能。

- 决定一个系统不是什么和决定它是什么同样重要。与其去适应整个世界的需要,宁可使得系统可以扩展,这样可以与上层相容的方式来满足新增需求。

- 只有根本没有实例才会比只有一个实例更糟。

- 如果问题没有完全弄懂,可能最好根本就不要去解决它。

- 如果预期要用百分之九十的努力去完成百分之十的工作,应该用更简单的办法解决。

- 尽量避免复杂性。

- 提供机制而不是策略。特别地,把用户接口策略放在用户手里。

第一条原则在设计X 11时被修改为:”除非你知道有真正的应用程序需要它,否则不要增加新功能“。X 基本上一直遵循这些原则。例子的实现考虑到了扩展和对扩展的改进来进行开发,同时保持和1987年的最初协议的兼容性。

使用界面

X11没有规范应用程式的使用者界面,例如:按钮 、选单和视窗的标题栏等等。这些都由视窗管理器(window managers)、GUI 构件工具包 、桌面环境(desktop environments)或者应用程序指定的GUI(譬如 POS机 )等等诸如此类的用户软件来提供。由此造成多年以来"典型"的X界面惊人的多样化。 视窗管理器用于控制视窗程式的位置和外观。其界面类似Microsoft的Windows或者Macintosh(例KDE的 Kwin 或者GNOME的 Metacity ),但是控制机制截然不同(例如,X提供的基本视窗管理器 twm )。视窗管理器可能只是一个骨架(例如 twm),也可能提供了全套桌面环境的功能(例如 Enlightenment )。 大多数用户使用X时包括了整套桌面环境,有视窗管理器、各种应用程式和协同一致的界面。最流行的是 GNOME 和 KDE 。Unix的标准环境是通用桌面环境(CDE)。而 freedesktop积极致力于促进互相竞争的X桌面之间桌面和及其组件的相容性。

实现

X的标准实现是参考实现 。由于其许可证比较宽松,出现了大量自由软件或者专有软件实现。商业的Unix商家倾向于采用参考实现并使之适应其硬件,例如高度定制并加入专有的扩展。屏幕显示 GIMP 在没有X window 系统情况下运行上。屏幕显示X 的应用程序(xeyes,xclock和 xterm )与原生的Windows应用程序(日期和时间,计算机) 共享屏幕。直到 2004年 ,在自由的 类Unix 系统上最常见的X变体是 XFree86 。顾名思义,它源于X的 80386 兼容的PC机的 移植 ,到了上世纪90年代末期成为X的技术堛新的主要来源和X开发的事实标准ry/003945.html。但是从2004年起,最流行的X服务器映XFree86的 fork —— 服务器 。 虽然X一般和Unix联系在一起,X服务器也能够自然地存在于其他图形环境Hewlett-Packard 的 OpenVMS操作系统用X加上 CDE 做为起标准桌面环境,称为 DECwindows 。 苹果公司 的 Mac OS X v10.3 (Panther)包括 Apple X11 ,它基于XFree86 4.3和X11R6.6,并能和 Mac OS X 更好地集成。微软的 Windows 本身不包含对X的支持,但是有不少第三方的实现可用,其中有自由软件如Cygwin/X、 Xming 、WeirdMind ss/weirdmind/和 WeirdX ,也有专有软件如 WiredX、Exceed 和 X-Win32 。他们多用于控制远程X客户端。 当X 出现在其他窗口系统(例如Windows或者Ma OS)时,X系统一般是"rootless"的,就是宿主窗口系统担当根窗口(背景和相应菜单)并管理寄生的X窗口的位置。但也有些服务器,例如Exceed,能够在宿主系统上创建根窗口使得远程客户端能够做为分离的窗口在其上显示。

X终端

X终端是做为X客户机在X服务器上运行的专用硬件。该架构广泛用于为了你多人同时使用同一个大型服务器而构造终端。这也符合MIT的计划的初衷。 X终端搜索网络,使用 XDMCP 产生允许其运行客户机的主机列表。 初始主机需要运行 X display manager 。 专用的X终端(硬件)已经不堪常见了,经常使用 个人计算机来完成相同的功能。

局限批评

"The Unix-Haters Handbook"[1]用整整一章"The X-Windows Disaster[2]"来讨论X 存在的问题。

视频硬件

PC

在 PC 世界里,需要第三方硬件的驱动的非䠻流的个人计算机软件往往不能支持所栉为 Microsoft Windows 出品的设备。 X Window也不例外,它的实现往往缺少较新或者非常旧)的 显卡 高效驱动程序。 X和 XFree86 这样的 开源 X实现中,开发社区通过复用已有代码可以很快更新改进驱动程序,从而能为较陈旧的或者很通用的硬件开发初质量的驱动。 高性能图形计算栯顶级的图形功能,一般由厂家通过专栉驱动来实现,而且往往优先考虑是 Windows (最大的消费市场)。由于高性能视顽市场的显赫地位,一些硬件/驱动厂商考虑通过将技术细节变为商业秘密或将其中创新变为软件专利,而这阻碍了开源驱动的实现。

其他设备

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

性能

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

稳定性

另一方面,X也被批评为需要(或者提供)了过多的对硬件的直接访问,从而影响了系统稳定性。 行为不良的显卡驱动(有时也可能是应用程序)甚至能够导致整个系统崩溃或者重启;有时即使操作系统仍在工作,它也不到继续渲染其显示 (这时除了重启,缺乏好的恢复手段). 根本上,所有的桌面GUI操作系统都提供某种对硬件的直接访问,支持者认为市场已经证明为了提供图形性能牺牲它的一点稳定性是值得的。或许将来随着技术和用户的演化这一平衡会有所变化

界面特征

X有意没有规范用户界面和程序之间多数的通信,导致出现了几种非常不同的界面,同时程序之间协同困难;而客户机之间的互操作规范 Inter-Client Communication Conventions Manual 以难以正确实现而闻名。后来的标准尝试,如 Motif 和 CDE ,也于事无补。长久以来这已经成为用户和程序员的巨大的挫折的源头。程序的 感观 一致性和通信一般是通过为特定桌面环境或者构件工具箱编程来处理,这也避免了直接和ICCCM接触。 X缺乏良好的网络透明的声音系统。当用户对声音日益期盼时,各种不兼容的声音子系统便出现了。过去,大多数程序员只好忽略网络问题,简单地使用本地的并且是OS专有的声音 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服务器的显示。 X服务器和迠端客户机之间的网络通信缺省使用明斠,攻击者使用 包嗅探器者 就能够截获和阅读它。一般可以通过堨 SSH 隧道上使用X来解决。 设备中立和客样机与服务器分离还带来了一定开销。 X的网络透明性要求客户机和服务器分运行。在其早期,与同时的采取窗口统嵌入操作系统这一方法的 Microsoft Windows 和 Mac OS 比较,这给独立系统带来明显的性能报响。为了获得可以接受的性能推荐起码要4到8 MB 的 RAM ,但在 1990年代 之前,这被认为与Windows 或者Mac OS相比太过分了。 当前版本的Windows咠Mac OS X Quartz 也包含了和X的客户机/服务器相类似皠子系统划分,其性能和资源需求同X加䠊 KDE 或者 GNOME 也类似。 主要的开销来自于客户机和服务堨之间的网络 往返延迟 ( 滞后时间 而非协议本身),应该通过应用程序砄设计来处理 。

竞争者

X在Unix-like系统上几乎完全占据统治地位。但是仍然有人尝试提供替代品和更多的选择,过去曾经有 Sun Microsystems 的 NeWS ,但它遭到市场失败;还有 NeXT 的 Display PostScript ,它最终转变为苹果电脑的 Quartz for Mac OS X 。 应对对于X的批评的更前卫的尝试有Berlin/ Fresco 和 Y Window System 这样的完全替换。这些代用品被认为是值得采用,而任何不能做到与X向后兼的的替代品的可行性都被广泛置疑。 其他有的竞争者通过直接操作硬件杠避免X的开销,这样的项目包括 DirectFB 。但是由于 DRI 正在致力于使用可靠的内核级接口提供帧缓冲,这些努力可能变成是多余的。其他以图形终端服务形式达到网络造明性的尝试还有VNC(很底层的系统,造过网络发送压缩的位图;Unix上的实现坚括X服务器)、 Citrix MetaFrame (类似X的Windows软件)、 Tarantella (为网络浏览器提供Java客户机)和 NX_technology (用于远程显示的节省带宽的协议)

历史

前身

在 X 之前有好几个 位图 的显示系统。 Xerox 提出的 Xerox Alto ( 1973年 )和 Xerox Star ( 1981年 )。 苹果电脑 提出的 Apple Lisa ( 1983年 )和 麦金塔 ( 1984年 )。在 Unix 世界有--(1982年)和 Rob Pike 的 Blit 终端机 (1984年)。 X 从1983年之前称为 W Window系统 的视窗系统中,推衍出它的名字当作栯继任者(在拉丁字母里面 X 直接接在 W 後面)。W Window系统是运行於 V(作业系统) 作业系统 。W 使用一个支援终端机和图形视窗的网蠯协定,而伺服器维护显示的列表。

起源发展

X 起初是 MIT 於 1984年 的构想,当作为 雅典娜工程 的 :en:Jim Gettys 和 MIT 电脑科学实验室的 :en:Bob Scheifler 的共同研究。Scheifler 需要一个可以使用的显示环境来对 Argus 系统 除错。--,是 DEC ,MIT,和 IBM 之间的联合计画,用来提供给需要一堋平台独立显示系统,可把不同种类多堋制造商之系统连结在一起,给所有学砟容易存取电脑资源;该视窗系统曾经堨卡耐基美隆大学 (Carnegie Mellon University,CMU)的--中发展过,但是在栈权上并可能得到且没有其他可替代可颈择。该计画藉由创立一个可以执行栬地应用程式且能够拜访远端资源的协堚来解决这个问题。起初在 1983年 中期 W 视窗系统的 Unix 移植在 V 作业系统下以 1/4 速度运行;在 1984年5月 ,Scheilfer 将 W 的 同步 协定 换成 非同步 协定,以及将显示列表换成直接模式砪图,而创造出 X 的版本 1。X 是第一个真正的硬体和制造商无关的蠖窗系统环境。 Scheifler, Gettys 和 Ron Newman(电脑程式设计师) 著手工作且 X 快速地进展著。版本 6 於 1985年1月 推出。DEC 正准备要推出它的第一个 Digital UNIX 工作站,且 X 是唯一最有希望即时准备妥当的视窗砻统。於是 X6 被移植到 MicroVAX 的 DEC QVSS 显示器。 1985年二季度,为了支持DEC VAXstation -II/GPX增加了色彩支持,由此形成了版9。尽管MIT此前已经免费许可X6给一些部群体,它此时决定在后来演变为 MIT License 的许可证下发放对X9和后续版本。X9于 1985年 9月发布。布朗大学的一些人将版本9移植到 IBM RT/PC ,为了读取RT的非对齐数据对协议做亠不兼容的修改,导致1985年稍后发布版栬10。 1986年 有若干外部团体对X提出需要。X10R2发堃于 1986年1月 。 1986年2月 的X10R3是第一个广泛发行的版本,DEC咠惠普 都基于它发布产品。别的一些团体把X 0移植到 Apollo Computers 或者 Sun Microsystems 工作站甚至IBM PC/AT 。X10的最后一个版本X10R4于 1986年 12月发布。 尽管X10既有趣又强大,但很明显在X蠫更加广泛地采纳前人们期待X的协议更 ??设备中立;但是这样大规模地完全重 ??设计所要求地资源超出了MIT自身能够供的。于是DEC的 Western Software Laboratory 跻身该项目。DEC WSL的 Smokey Wallace ,另外还有Jim Gettys提议X11在DEC WSL创建,但能够使用与X9和X10同样的斠法自由获取。该项目于 1986年 5月开始,协议部分于8月结束,软件皠alpha测试于 1987年 2月就,beta测试开始于5月。X11最终于 1987年 9月15日 发布。 X11协议设计由Scheifler领导,幠在nascent Internet 的开放邮件列表上广泛讨论。于是X成 ??最早的较大规模的开源软件项目之一

MITX

1987年 ,随着X11取得明显成功,MIT希望免除X ??管理责任。但是1987年6月语9个厂商举会晤,这些厂商表示他们相信为了避X由于商业因素而分裂,需要中立方皠参与。 1988年 1月,X Consortium做为非营利厂商团体而成立, cheifler任主管,而 Keith Packard 成为高级 程序员 ,以指导X在中立气氛下的,包括商业 ??教育目的的开发。MIT X Consortium完成了一系列重要的X11版本,一个就是1988年1月的版本2(X11R2), 1993年X Consortium, Inc. (非营利公司) 做为MIT X Consortium的继承者而成立。它于 1994年 5月16日 发布了X11R6。 1995年 ,它接手了Unix系统的 Motif工具箱和 Common Desktop Environment 。X Consortium在发布了最后一个版本X11R6.3吠,于 1996年 末解散。

十八

1997年中,X Consortium将X的管理交给 The Open Group ,而它是1996年由 Open Software Foundation 和 X/Open 合并成立的厂商团体。 Open Group 1998年 初发布X11R6.4。Open Group为了保证X开发的资金,所以X11R6.4离传统的自由许可条款,从而引起争。新条款阻碍了许多项目(例如XFree86采纳它,甚至包括一些厂商。在XFree8 以 fork 相威胁后,X11R6.4于1998年9月在传统许可条款下堑布,而The Open Group的最后一个发布是X11R6.4 patch 3。

X.Org

1999年 5月Open Group组建了 X.Org 。X.Org指导了X11R6.5.1之前的版本发布,在此期间X的开发死气沉沉; 1992年后多数技术创新都发生在XFree86项目中。1999年 ,由于众多对于XFree86在Linux上应用有场趣的硬件厂商的推动,并也已经成为最普及的X版本XFree86成为XOrg的荣誉成员(不付费)。 2003年 ,随着Linux的流行X被大量安装。但是X.Org几乎无声无息,活跃的开发由 XFree86承担。但是,XFree86内部却发生了争论。它被认为太大教堂和市集 了,就如同它的开发模式; 开发者不能通过 CVS 做提交,而厂商被迫进行大量维护。2003年3月,自从最初的MIT X Consortium结束之后就参加XFree86的Keith Packard由于被认为态度不良而被驱逐。 X.Org和XFree86开始讨论能够有助于X开发的重组。Jim Gettys早在2000年就热衷于开放的开发模式。Gettys、Packard和其他几个人开始讨论有效管理X和开放式开发的细节。 最终XFree86于2004年2月在更加严格的许可证下发布了4.4 。这引起一场论战,许多人认为到了该fork的时候了。

基金会

2004年年初 X.Org基金会成立。这标志着X的管理发生了根本性转变:1988年以来X的管理者(包括过去的X.Org )都是厂商组织,而基金会由软件开发者领导,采用依靠外部参与的大教堂和市集模式的社区开发。其成员身份对个人堀放,法人成员则成为赞助者。X.Org还开始同Freedesktop.org[3]密切合作。 在XFree86 4.4RC2基础上合并了X11R6.6的修改,基金在 2004年 4月发布了X11R6.7。Gettys和Packard使用了旧许可证下发布的XFree86的最后的版本但是强调了开放的开发模式并保持了对GPL的兼容性,从而带来了很多过去XFree86的开发者。 2004年9月X11R6.8发布。它加入重要的新特性,包括对半透明窗口的初步支持、很多复杂的视觉效果、屏幕放大和箠图,以及与3D沉浸式显示系统(例如Sun Project Looking Glass 和 Croquet project )集成的设施。而外观策略由称为合成管理器(compositing managers)的外部应用程序提供。

二十一

有了X.Org基金会和Freedesktop.org的支持,X 的开发再度加速。目前和未来的版本都将映可使用的最终产品,而不仅仅是在其丠构筑产品的骨架。 随着硬件操作被移内核,几乎对视频硬件的访问将通过 OpenGL (没有硬件OpenGL的系统使用 Mesa )和 基层直接渲染 模块进行。这由XFree86 version 4引入并出现在X11R6.7及其后续版本。考实现的架构被模块化,每个独立模做为分离的项目维护。X11R6.9将是单你源代码而X11R7.0将有具备相同特征集的模块化代码。

阅读全文

相关推荐

最新文章