複製鏈接
請複製以下鏈接發送給好友

X-window

鎖定
X-window於1984年在麻省理工學院MIT)電腦科學研究室開始開發的,當時Bob Scheifler正在發展分散式系統(distributed system),同一時間 DEC公司的 Jim Gettys 正在麻省理工學院做 Athena 計劃的一部分。兩個計劃都需要一個相同的東西——一套在UNIX機器上運行優良的視窗系統。因此合作關係開始展開,他們從斯坦福(Stanford)大學得到了一套叫做W的實驗性視窗系統。因為是根據W視窗系統的基礎開始發展的,當發展到了足以和原先系統有明顯區別時,他們把這個新系統叫做X。
中文名
X-window
國    籍
美國
地    點
麻省理工學院
開發時間
1984年

目錄

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便從事於完整協議(protocol)的重新設計。這就是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。
2.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服務器提供的服務進行輸入輸出。
X服務器(X Server)是一個管理顯示的進程,必須運行在一個有圖形顯示能力的電腦上。理論上,一台電腦上可以同時運行多個X服務器,每個X服務器能管理多個與之相連的顯示設備。
X客户程序(X Client)是一個使用X服務器顯示其資料的程序,它可以運行在與X服務器不同的電腦上。
X協議(X protocol)是X客户程序和服務器進行通信的一套協定,X協議支持網絡,能在本地系統中和網絡實現這個協議,支持的網絡協議TCP/IP, DECnet等。

X-window優點

X的這種任務劃分有幾個優點:
1.客户程序可以在遠程電腦上執行計算任務,而使用的X服務器僅負責複雜的圖形顯示,充分發揮X服務器在顯示上的優勢。
2.只有X服務器與硬件打交道,所有的客户程序都與硬件無關,這很容易在不同的平台上移植。
3.客户程序可以在不同的電腦上運行,從巨型機到個人電腦,從而充分發揮網絡計算的優越性。
儘管每個X客户程序都可以對整個屏幕範圍進行顯示操作,但標準的做法是先創建一個顯示視窗,此後客户程序的所有顯示都相對於這個視窗進行操作。這樣在同一屏幕內就能同時顯示多個獨立的客户程序,通過對視窗的管理在不同的程序之間進行切換。每個視窗應該位於屏幕的哪個位置、何時顯示、何時隱藏,以及視窗的標題、四周如何顯示等,這些都不應該由產生這個視窗的客户程序自己控制和維護,否則就不能達到簡化設計的目的。X Window並沒有自己實現這些任務,在X的設計原則中,這些代表 GUI風格的任務仍然是客户程序的任務,因此X將管理視窗的任務給予了一個特殊客户程序——視窗管理器,使用不同的視窗管理器會使X Window的外觀看起來截然不同。
X系統只負責顯示圖形,並不限制顯示和操作的風格,因此不同的X Window的風格並不相同,用户可以根據自己的喜好進行選擇。
圖1 圖1
在X Window上,所有的視窗形成了一個樹狀結構。X Window的視窗管理程序運行在根視窗上,所有的其他視窗為根視窗的子視窗,而其他視窗上也有相應的按鈕、對話框等元件,這些是它的子視窗。如圖1所示。
由於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程序利用了函數庫,自然就有能力使用所有可用的通信方法。這時通道本身就變得不再重要了,而只是一個概念而已。
3.Server和Client之間的通信
Server和Client通信的方法大致有兩類,對應於X系統的兩種基本操作模式。
第一類,Server和Client在同一台機器上執行,它們可以共同使用機器上任何可用的通信方法做互動式信息處理。在這種模式下,X可以同其他傳統的視窗系統一樣高效工作。
第二類,Client在一部機器上運行,而顯示器和Server則在另一部機器上運行。因此兩者的信息交換就必須通過彼此都遵守的網絡協議進行,最常用的協議為TCP/IP。這種通信方式一般被稱為網絡透明性,這也幾乎是X獨一無二的特性。
4.X的用户接口
X的設計目標之一就是能創建許多不同形式的用户接口。其他視窗系統提供具體的交互方法,而X只提供一般的架構,讓系統創建者建造所需的交互風格。這種特性使得開發者可以在X的基礎上建造全新的接口,並且可以在任何時刻根據自己的需要選用適當的接口。
一般來説,用户接口可以分為兩部分。管理接口也就是視窗管理器,是命令的最高層,它負責在屏幕上建構或重建視窗,改變視窗的大小、位置,或者將視窗改變成圖示等。
應用接口確定了用户和應用程序之間的交互風格,即用户如何利用視窗系統的設備程序來控制應用程序並輸入資料給它。例如,如何用鼠標來選定一個選項。
5.X獨立於操作系統
X不是內置於操作系統,它只是比用户層次稍高一些。在系統中也是一個相對獨立的元件。這樣做有如下優點:
1. 易於安裝和改版,甚至去除。這種工作不需要重啓系統,也不會對其他應用程序造成干擾。
2.第三方很容易支持並加強它的功能。例如你的製造廠商提供的系統不夠好,你可以向別人買更好或更快的版本。
3.X不會制定操作系統,因此成為一種標準,這也是第三方發展軟件的原動力。
4.為了開發者。在Server上進行工作時,如果程序異常中斷,只會影響到視窗系統,不會造成機器的損壞或操作系統內核的破壞。