X Window系统
维库,知识与思想的自由文库
3个分类: X服务器 | X Window 系统 | 視窗系統
[编辑] 概述X Window系统 (X11或X)是一种位图显示的视窗系统。它是在Unix和类Unix操作系统,以及OpenVMS上建立图形用户界面的标准工具包和协议,并可用于几乎所有的现代操作系统。 X 為 GUI 環境提供了基本的框架:在屏幕上繪圖和移動視窗,以及與滑鼠和鍵盤的互動。X 並沒有管轄到使用者介面 — 這是由每個獨立的程式處理。因為如此,以 X 為基礎環境的視覺樣式變化非常地多;不同的程式可能徹底地展現不同的介面。 X 以 "網路通透性" 為特色:應用程式("客戶端" 應用程式)所執行的機器,不一定是使用者本地的機器(顯示的 "伺服器")。X 的 "客戶端" 和 "伺服器" 字眼的使用是人們經常預期的相反,"伺服器" 是使用者本地的顯示而不是遠端的機器。 X 在 1984年起始於 MIT。現在的協定版本,X11,是在1987年9月所釋出的。該專案是由 X.Org 基金會所領導;現在的參考實作是版本 11 release 6.8.2,且在MIT 執照和相似的表示許可執照下是自由軟體。
[编辑] X客户端/服务器模式和网络透明性
X基于客户端-服务器模型。一个X服务器与各种客户端程序通讯 。服务器接受对于图形输出(窗口)的请求并反馈用户输入(键盘、鼠标、触摸屏)。服务器可能是一个能显示到其他显示系统的应用程序,也可能是控制某个PC的视频输出的系统程序,还可能是特殊硬件。 术语客户端-服务器——你的终端是"服务器",而远端应用程序是 "客户端"——经常困扰X的新用户,因为似乎正好相反。但X采纳了程序而非最终用户或者硬件的视角:本地的X显示为程序提供显示服务,所以它扮演了服务器;远端程序使用了该服务,所以它是客户端。 服务器和客户端之间的通信协议的运作对计算机网络是透明的: 客户端和服务器可以在同一台计算机上,也可以不是, 或许其架构和操作系统也不同,但都能运行。客户机和服务器还能够使用安全连接上在互联网上安全地通讯。 为了使远端客户程序显示到本地服务器,用户一般需要启动一个终端窗口和到达远端计算机的telnet或者ssh ,令其显示到用户计算机, (例如 在运行[bash]]的远端计算机上export DISPLAY=[用户的计算机]:0)然后启动客户端。 然后客户端就会连接到本地计算机,并且远端应用程序会显示到本地屏幕并被本地输入设备所控制。与之对应,本地计算机上也可以执行一个连接到远端计算机的小助手程序并在那里启动期望的应用程序。 实际的远端客户端的例子有:图形化管理远程计算机;在远端Unix计算机上运行计算密集的仿真程序并把结果显示到本地的Windows桌面计算机;用一套显示器、键盘和鼠标控制同时运行在多台计算机上的图形化软件。 [编辑] X的設計原則1984年,Bob Scheifler和Jim Gettys制訂了X的早期原則:
[编辑] 使用者界面X故意沒有規範應用程式的使用者界面,例如 按鈕、選單和視窗的標題欄等等。這些都由視窗管理器(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.org積極致力於促進互相競爭的X桌面之間的桌面和及其組件的相容性。 [编辑] 实现X的标准实现是X.Org的参考实现。由于其许可证比较宽松,出现了大量自由的或者专有的实现。商业的Unix商家倾向于采用参考实现并使之适应其硬件,例如高度定制并加入专有的扩展。
虽然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 [2]和WeirdX,也有专有软件如WiredX、Exceed和X-Win32。他们多用于控制远程X客户端。 当X寄生在其他窗口系统(例如Windows或者Mac OS)时,X系统一般是"rootless"的,就是说宿主窗口系统担当根窗口(背景和相关菜单)并管理寄生的X窗口的位置。但是也有些服务器,例如Exceed,能够在宿主系统上创建根窗口使得远程客户端能够做为分离的窗口在其上显示。 [编辑] X终端X终端是做为瘦客户机在X服务器上运行的专用硬件。该架构广泛用于为了使多人同时使用同一个大型服务器而构造终端。这也符合MIT的计划的初衷。 X终端搜索网络,使用XDMCP产生允许其运行客户机的主机列表。 初始主机需要运行X display manager。 专用的X终端(硬件)现在已经不太常见了,现在经常使用个人计算机来完成相同的功能。 [编辑] X的局限和批评UNIX-HATERS Handbook用整整一章"The X-Windows Disaster" [3]来讨论X在上世纪80年代末到90年代初的问题。 [编辑] 视频硬件[编辑] PC在PC世界里,需要第三方硬件的驱动的非主流的个人计算机软件往往不能支持所有为Microsoft Windows出品的设备。 X Window也不例外,它的实现往往缺少较新(或者非常旧)的显卡 高效驱动程序。 X.org和XFree86这样的开源X实现中,开发社区通过复用已有代码,可以很快更新改进驱动程序,从而能够为较陈旧的或者很通用的硬件开发初高质量的驱动。 高性能图形计算目前是顶级的图形功能,一般由厂家通过专有驱动来实现,而且往往优先考虑是Windows (最大的消费市场)。由于高性能视频市场的显赫地位,一些硬件/驱动厂商会考虑通过将技术细节变为商业秘密或者将其中创新变为软件专利,而这阻碍了开源驱动的实现。 [编辑] 其他设备在PC机之外的世界里,很多X的实现是为非传统设备如PDA和手机而编写(或者移植) 的。这样的实现必须提供为在此之上运行的平台提供至少是必须的设备支持。 [编辑] 性能X Window的C/S体系设计在应用程序和视频硬件之间多加了一层软件,导致图形效率下降,所以引起了一些批评。因此开发了若干扩展,在设备和客户机在同一个系统上时,通过在取得适当许可的情况下,以直接访问设备来改善这一问题。而在Linux上,一些视频驱动已经部分移入内核以提高效率。 [编辑] 稳定性另一方面,X也被批评为需要(或者提供)了过多的对硬件的直接访问,从而影响了系统稳定性。 行为不良的显卡驱动(有时也可能是应用程序)甚至能够导致整个系统崩溃或者重启;有时即时操作系统仍在工作,它也不到继续渲染其显示 (这时除了重启,缺乏好的恢复手段). 根本上,目前所有的桌面GUI操作系统都提供某种对硬件的直接访问,支持者认为市场已经证明为了提供图形性能牺牲一点稳定性是值得的。或许将来随着技术和用户的演化这一平衡会有所变化。 [编辑] 用户界面特征X有意没有规范用户界面和程序之间大多数的通信,导致出现了几种非常不同的界面,同时程序之间协同困难;而客户机之间的互操作规范ICCCM以难以正确实现而闻名。后来的标准化尝试,如Motif和CDE,也于事无补。长久以来这已经成为用户和程序员的巨大的挫折的源头 [4]。目前,程序的感观一致性和通信一般是通过为特定桌面环境或者构件工具箱编程来处理,这也避免了直接和ICCCM接触。 X缺乏良好的网络透明的声音系统。当用户对声音日益期盼时,各种不兼容的声音子系统便出现了。过去,大多数程序员只好忽略网络问题,简单地使用本地的并且是OS专用的声音API。第一代客户机-服务器声音系统有rplay和Network Audio System。而最近的努力产生了EsounD(GNOME)和ARts(KDE),而这也并非标准。而其他系统如Media Application Server则正在开发当中。 直到最近,X也没有好的打印显示器所显示的内容(所见即所得 )的解决方案。 许多X客户机完全用PostScript实现打印,而这与发送到服务器的几乎整个是分离的。从X11R6.3起包含了Xprint,此时客户机已经不错,但是服务器实现还不行。而从X11R6.8起实现的质量已经很好[5],并且获得了部件的支持。 [编辑] 网络X不能像VNC那样把客户端和会话从一个服务器卸下然后再附加到另一个上,但为X增加此功能的工作正在进行,另外还要实现通过VNC实现X服务器的显示。 X服务器和远端客户机之间的网络通信缺省使用明文,攻击者使用包嗅探器者就能够截获和阅读它。一般可以通过在SSH隧道上使用X来解决。 设备中立和客户机与服务器分离还带来了一定开销。 X的网络透明性要求客户机和服务器分别运行。在其早期,与同时的采取窗口系统嵌入操作系统这一方法的Microsoft Windows和Mac OS比较,这给独立系统带来明显的性能影响。为了获得可以接受的性能推荐起码要4到8MB的RAM,但在1990年代之前,这被认为与Windows 或者Mac OS相比太过分了。 当前版本的Windows和Mac OS X Quartz也包含了和X的客户机/服务器相类似的子系统划分,其性能和资源需求同X加上KDE或者GNOME也类似。 现在主要的开销来自于客户机和服务器之间的网络往返延迟(滞后时间而非协议本身),应该通过应用程序的设计来处理[6]。 [编辑] X的竞争者X在Unix-like系统上几乎完全占据统治地位。但是仍然有人尝试提供替代品和更多的选择。过去曾经有Sun的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 提出的 Alto(1973年)和 Star(1981年)。蘋果電腦提出的 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和惠普都基于它发布产品。别的一些团体把X10移植到Apollo或者Sun工作站甚至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成为最早的较大规模的开源软件项目之一。 [编辑] MIT X Consortium和the X Consortium, Inc.1987年,随着X11取得明显成功,MIT希望免除X的管理责任。但是1987年6月语9个厂商举行会晤,这些厂商表示他们相信为了避免X由于商业因素而分裂,需要中立方的参与。1988年1月,X Consortium做为非营利厂商团体而成立,Scheifler任主管,而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年末解散。 [编辑] Open Group1997年中,X Consortium将X的管理交给The Open Group,而它是1996年由Open Software Foundation和X/Open合并成立的厂商团体。 Open Group1998年初发布X11R6.4。Open Group为了保证X开发的资金,所以X11R6.4偏离传统的自由许可条款,从而引起争议[7]。新条款阻碍了许多项目(例如XFree86)采纳它,甚至包括一些厂商。在XFree86以fork相威胁后 [8],X11R6.4于1998年9月在传统许可条款下发布[9],而The Open Group的最后一个发布是X11R6.4 patch 3。 [编辑] X.Org和XFree861999年5月Open Group组建了X.Org。X.Org指导了X11R6.5.1之前的版本发布。 在此期间X的开发死气沉沉 [10];1992年后多数技术创新都发生在XFree86项目中。1999年,由于众多对于XFree86在Linux上应用有兴趣的硬件厂商[11]的推动,并也已经成为最普及的X版本,XFree86成为X.Org的荣誉成员(不付费)[12]。 2003年,随着Linux的流行X被大量安装。但是X.Org几乎无声无息[13],活跃的开发由 XFree86承担。但是,XFree86内部却发生了争论。它被认为太教堂式了,如同它的开发模式; 开发者不能通过CVS做提交[14],而厂商被迫维护大量补丁[15]。2003年3月,自从最初的MIT X Consortium结束之后就参加XFree86的Keith Packard由于被认为态度不良而被驱逐[16] [17] [18]。 X.Org和XFree86开始讨论能够有助于X开发的重组[19] [20] [21]。Jim Gettys早在2000年就热心于开放的开发模式[22]。Gettys、Packard和其他几个人开始讨论有效管理X和开发式开发的细节。 最终就像是X11R6.4许可证争议的回响,XFree86于2004年2月在更加严格许可证下发布了4.4 。许多依赖X的项目认为该许可证无法接受 [23],特别是它和 GNU General Public License [24]不兼容。 这引起一场论战,许多人认为到了该fork [25]的时候了。 [编辑] X.Org基金会2004年年初X.Org基金会成立。这标志着X的管理的根本性转变。1988年以来X的管理者(包括过去的X.Org)都是厂商组织,而基金会由软件开发者领导,采用依靠外部参与的集市模式的社区开发。其成员身份对个人开放,法人成员则成为赞助者。X.Org还开始同freedesktop.org密切合作。 在XFree86 4.4RC2基础上合并了X11R6.6的修改,基金会在2004年4月发布了X11R6.7。Gettys和Packard使用了在旧许可证下发布的XFree86的最后的版本,但是强调了开放的开发模式并保持了与GPL的兼容性,从而带来了很多过去XFree86的开发者 [26]。 2004年9月X11R6.8发布。它加入重要的新特性,包括对半透明窗口的初步支持、很多复杂的视觉效果、屏幕放大和简图,以及与3D沉浸式显示系统(例如Sun的Project Looking Glass和Croquet project)集成的设施。而外观策略由称为合成管理器(compositing managers)的外部应用程序提供。 [编辑] 未来方向有了X.Org基金会和freedesktop.org,X的开发再度加速。目前和未来的版本都将是可使用的最终产品,而不仅仅是在其上构筑产品的骨架。 随着硬件操作被移入内核,几乎对视频硬件的访问将通过OpenGL(没有硬件OpenGL的系统使用Mesa)和基层直接渲染模块进行[27]。这由XFree86 version 4引入并出现在X11R6.7及其后续版本。 参考实现的架构被模块化,每个独立模块做为分离的项目维护。X11R6.9将是单体源代码而X11R7.0将有具备相同特征集的模块化源代码。[28]。 [编辑] 命名"X Window系统"通常简称为"X11"或者"X"。"X Windows"(按照"Microsoft Windows"的风格)一词已经正式废弃,一般也认为并不正确,尽管自从X之初就普遍使用并为了行文简洁而受偏爱(例如在UNIX-HATERS Handbook中)。 --> [编辑] 历史发布
[编辑] 参见[编辑] 参考
[编辑] 外部链接[编辑] 知名的實作
|




