X-window

X-window

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

簡介


工作持續地進行,新的版本(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的這種任務劃分有幾個優點:
1.客戶程序可以在遠程電腦上執行計算任務,而使用的X伺服器僅負責複雜的圖形顯示,充分發揮X伺服器在顯示上的優勢。
2.只有X伺服器與硬體打交道,所有的客戶程序都與硬體無關,這很容易在不同的平台上移植。
3.客戶程序可以在不同的電腦上運行,從巨型機到個人電腦,從而充分發揮網路計算的優越性。
儘管每個X客戶程序都可以對整個屏幕範圍進行顯示操作,但標準的做法是先創建一個顯示視窗,此後客戶程序的所有顯示都相對於這個視窗進行操作。這樣在同一屏幕內就能同時顯示多個獨立的客戶程序,通過對視窗的管理在不同的程序之間進行切換。每個視窗應該位於屏幕的哪個位置、何時顯示、何時隱藏,以及視窗的標題、四周如何顯示等,這些都不應該由產生這個視窗的客戶程序自己控制和維護,否則就不能達到簡化設計的目的。X Window並沒有自己實現這些任務,在X的設計原則中,這些代表 GUI風格的任務仍然是客戶程序的任務,因此X將管理視窗的任務給予了一個特殊客戶程序——視窗管理器,使用不同的視窗管理器會使X Window的外觀看起來截然不同。
X系統只負責顯示圖形,並不限制顯示和操作的風格,因此不同的X Window的風格並不相同,用戶可以根據自己的喜好進行選擇。
圖7-2
圖7-2
在X Window上,所有的視窗形成了一個樹狀結構。X Window的視窗管理程序運行在根視窗上,所有的其他視窗為根視窗的子視窗,而其他視窗上也有相應的按鈕、對話框等元件,這些是它的子視窗。如圖7-2所示。
由於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上進行工作時,如果程序異常中斷,只會影響到視窗系統,不會造成機器的損壞或操作系統內核的破壞。