對於普通用戶來說,操作系統最重要的功能,恐怕是能讓用戶方便的享用計算機硬件提供的各種資源,完成日常的工作了。絕大多數用戶對於Windows系統都非常熟悉,那麼從用戶界面上而言,Linux到底有什麼吸引人的地方呢?答案是他擁有X Windows.下面就讓我們進入X Windows的缤紛世界,真正體會Linux的眩目光彩。
一、X Windows的簡史
X於1984年在麻省理工學院電腦科學研究所開始發展。當時Bob Scheifler正在發展分布式系統,同一時間DEC公司的Jim Gettys也在麻省理工學院做Athena計劃的一部分,兩個計劃都需要一個相同的東西--一套在Unix機器上優良的視窗系統。因此他們開始合作,從斯坦福大學得到了一套叫做W的實驗性視窗系統,因為是基於W視窗系統的基礎上開始發展,當發展到了足以和原先系統有明顯區別時,他們把這個新系統叫做X。
二、X的基本部件
X系統不象早期的視窗系統是把一堆同類軟件集中在一起,而是由三個相關的部分組合起來的。
(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程序。
(3)通訊通道
有了Server和Client,他們之間就要傳輸一些信息,這種傳輸信息的媒介就是我們所要介紹的X的第三個組成部件:通訊通道。憑借這個通道,Client傳送“需求”給Server,而Server回傳狀態(status)及其他一些信息給Client。
Client是使用函數庫來使用通訊通道的。在系統或網絡上支持通訊形態需求的是內建於系統的基本的X視窗函數庫(library)。只要Client程序利用了函數庫,自然就有能力使用所有可用的通訊方法。這時通道本身就變得不再重要了,而只是一個概念而已。
三、Server和Client之間的通訊
Server和Client通訊的方法大致有兩類,對應於X系統的兩種基本操作模式。
第一種,Server和Client在同一台機器上執行,它們可以共同使用機器上任何可用的通訊方法做交互式信息處理。在這種模式下,X可以同其他傳統的視窗系統一樣,高效工作。
第二種,Client在一部機器上運行,而顯示器和Server則在另一部機器上運行。因此兩者的信息交換就必須通過彼此都遵守的網絡協議進行,最常用的協議為TCP/IP協議。這種通訊方式一般被稱為網絡透明性,這也幾乎是X獨一無二的特性。
四、X的用戶界面
X的設計目標之一就是能創建許多不同形式的用戶界面。其他的是窗西同志提供具體的交互方法,而X只提供一般的架構,讓系統建立者建造所需的交互風格。這種特性使得開發者可以在X的基礎上建造全新的界面,並且可以在任何時刻根據自己的需要選用適當的界面。
一般來說,用戶界面可以分為兩部分。管理界面也就是視窗管理器,是命令的最高層,他負責在屏幕上建購或重建視窗,改變視窗的大小、位置、或者將視窗改變成圖標等。
應用界面確定了用戶和應用程序之間的交互風格,即用戶如何利用視窗系統的設備程序來控制應用程序及輸入資料給它。例如,如何用鼠標來選定一個選項。
五、X獨立於操作系統
X不是內置於操作系統,他只是比用戶層次稍高一些。在系統中它也是一個相對獨立的組件。這樣做有如下優點:
(1)易於安裝和改版,甚至去除。這種工作不需要重啟系統,也不會對其他應用程序造成干擾。
(2)第三方很容易支持並加強它的功能。例如你的制造廠商提供的系統不夠好,你可以向別人買更好或更快的版本。
(3)X不會制定操作系統,因此成為一種標准,這也是第三方發展軟件的原動力。
(4)為了發展者利益。在Server上進行工作時,如果程序異常中斷,只會影響到視窗系統,不會造成機器的損壞或操作系統核心的破壞。