X-Window概述
對(duì)于普通用戶來說,操作系統(tǒng)最重要的功能,恐怕是能讓用戶方便的享用計(jì)算機(jī)硬件提供的各種資源,完成日常的工作了。絕大多數(shù)用戶對(duì)于Windows系統(tǒng)都非常熟悉,那么從用戶界面上而言,Linux到底有什么吸引人的地方呢?答案是他擁有X-Windows.下面就讓我們進(jìn)入XWindows的繽紛世界,真正體會(huì)Linux的眩目光彩。
一、X Windows的簡(jiǎn)史
X于1984年在麻省理工學(xué)院電腦科學(xué)研究所開始發(fā)展。當(dāng)時(shí)Bob Scheifler正在發(fā)展分布式系統(tǒng),同一時(shí)間DEC公司的JimGettys也在麻省理工學(xué)院做Athena計(jì)劃的一部分,兩個(gè)計(jì)劃都需要一個(gè)相同的東西--一套在Unix機(jī)器上優(yōu)良的視窗系統(tǒng)。因此他們開始合作,從斯坦福大學(xué)得到了一套叫做W的實(shí)驗(yàn)性視窗系統(tǒng),因?yàn)槭腔赪視窗系統(tǒng)的基礎(chǔ)上開始發(fā)展,當(dāng)發(fā)展到了足以和原先系統(tǒng)有明顯區(qū)別時(shí),他們把這個(gè)新系統(tǒng)叫做X。
二、X的基本部件
X系統(tǒng)不像早期的視窗系統(tǒng)是把一堆同類軟件集中在一起,而是由三個(gè)相關(guān)的部分組合起來的。
(1) Server(服務(wù)器):控制實(shí)際顯示器和輸入設(shè)備的程序。Server是控制顯示器和輸入設(shè)備(鍵盤和鼠標(biāo))的軟件。Server可以建立視窗,在視窗中畫圖形和文字,響應(yīng)Client程序的“需求”(requests),但他不會(huì)自己動(dòng)作,只有在Client程序提出需求后才完成動(dòng)作。
每一套顯示設(shè)備只對(duì)應(yīng)一個(gè)唯一的Server,而且Server一般由系統(tǒng)的供應(yīng)商提供,通常無法被用戶修改。對(duì)于操作系統(tǒng)而言,Server只是一個(gè)普通的用戶程序而已,因此很容易換個(gè)新的版本,甚至是第三方提供的原始程序。
(2) Client(客戶端):Client是使用系統(tǒng)視窗功能的一些應(yīng)用程序。在X下的應(yīng)用程序稱作Client,原因是他是Server的客戶,他要求Server響應(yīng)他的需求完成特定的動(dòng)作。
Client無法直接影響視窗或顯示,他們只能送一個(gè)請(qǐng)求(request)給Server,由Server來完成他們的請(qǐng)求。典型的請(qǐng)求通常是“在某個(gè)視窗中寫Hello World的字符串”,或者從A到B畫一條直線。
Client的功能大致可分為這么兩部分:向Server提“需求”只是他的一部分功能,其他的功能是為用戶執(zhí)行程序而準(zhǔn)備的。例如輸入文字信息、作圖、計(jì)算等等。通常,Client程序的這一部分是和X獨(dú)立的,他對(duì)于X幾乎不需要知道什么。通常,應(yīng)用程序(特別是只大型的標(biāo)準(zhǔn)繪圖軟件、統(tǒng)計(jì)軟件等)對(duì)許多的輸出設(shè)備具有輸出的能力,而在X視窗中的顯示只是Client程序許多輸出格式中的一種,所以,Client程序中和X相關(guān)的部分在整個(gè)程序中只占非常小的一部分。
用戶可以通過不同的途徑使用Client程序:通過系統(tǒng)提供的程序來使用;使用來自于第三方的軟件;或者是用戶自己為了某種特殊應(yīng)用而編寫的自己的Client程序。
(3) 通訊通道:有了Server和Client,他們之間就要傳輸一些信息,這種傳輸信息的媒介就是我們所要介紹的X的第三個(gè)組成部件:通訊通道。憑借這個(gè)通道,Client傳送“需求”給Server,而Server回傳狀態(tài)(status)及其他一些信息給Client。
Client是使用函數(shù)庫來使用通訊通道的。在系統(tǒng)或網(wǎng)絡(luò)上支持通訊形態(tài)需求的是內(nèi)建于系統(tǒng)的基本的X視窗函數(shù)庫(library)。只要Client程序利用了函數(shù)庫,自然就有能力使用所有可用的通訊方法。這時(shí)通道本身就變得不再重要了,而只是一個(gè)概念而已。
三、Server和Client之間的通訊
Server和Client通訊的方法大致有兩類,對(duì)應(yīng)于X系統(tǒng)的兩種基本操作模式。 第一種,Server和Client在同一臺(tái)機(jī)器上執(zhí)行,它們可以共同使用機(jī)器上任何可用的通訊方法做交互式信息處理。在這種模式下,X可以同其他傳統(tǒng)的視窗系統(tǒng)一樣,高效工作。第二種,Client在一部機(jī)器上運(yùn)行,而顯示器和Server則在另一部機(jī)器上運(yùn)行。因此兩者的信息交換就必須通過彼此都遵守的網(wǎng)絡(luò)協(xié)議進(jìn)行,最常用的協(xié)議為TCP/IP協(xié)議。這種通訊方式一般被稱為網(wǎng)絡(luò)透明性,這也幾乎是X獨(dú)一無二的特性。
四、X的用戶界面
X的設(shè)計(jì)目標(biāo)之一就是能創(chuàng)建許多不同形式的用戶界面。其他的是窗西同志提供具體的交互方法,而X只提供一般的架構(gòu),讓系統(tǒng)建立者建造所需的交互風(fēng)格。這種特性使得開發(fā)者可以在X的基礎(chǔ)上建造全新的界面,并且可以在任何時(shí)刻根據(jù)自己的需要選用適當(dāng)?shù)慕缑?。一般來說,用戶界面可以分為兩部分。管理界面也就是視窗管理器,是命令的最高層,他負(fù)責(zé)在屏幕上建構(gòu)或重建視窗,改變視窗的大小、位置、或者將視窗改變成圖標(biāo)等。應(yīng)用界面確定了用戶和應(yīng)用程序之間的交互風(fēng)格,即用戶如何利用視窗系統(tǒng)的設(shè)備程序來控制應(yīng)用程序及輸入資料給它。例如,如何用鼠標(biāo)來選定一個(gè)選項(xiàng)。
五、X獨(dú)立于操作系統(tǒng)
X不是內(nèi)置于操作系統(tǒng),他只是比用戶層次稍高一些。在系統(tǒng)中它也是一個(gè)相對(duì)獨(dú)立的組件。這樣做有如下優(yōu)點(diǎn):
(1)易于安裝和改版,甚至去除。這種工作不需要重啟系統(tǒng),也不會(huì)對(duì)其他應(yīng)用程序造成干擾。
(2)第三方很容易支持并加強(qiáng)它的功能。例如你的制造廠商提供的系統(tǒng)不夠好,你可以向別人買更好或更快的版本。
(3)X不會(huì)制定操作系統(tǒng),因此成為一種標(biāo)準(zhǔn),這也是第三方發(fā)展軟件的原動(dòng)力。
(4)為了發(fā)展者利益。在Server上進(jìn)行工作時(shí),如果程序異常中斷,只會(huì)影響到視窗系統(tǒng),不會(huì)造成機(jī)器的損壞或操作系統(tǒng)核心的破壞。