|   X-Window系統介紹  時間:2016-12-30作者(zhe):華清遠見 一.X-Window系統簡介 X-Window(也常稱為X11或X)系統是一種以位圖方式顯示的軟件視窗系(xi)統,初是1984年麻省理工學院的研究,之后變成UNIX、類UNIX、以及OpenVMS等操作系統所一致適用的標準化軟件(jian)工具包(bao)及顯示架(jia)構的運作協議。X Window系(xi)(xi)統(tong)通(tong)過軟(ruan)件(jian)工具及架構協(xie)議來建立操(cao)作系(xi)(xi)統(tong)所用的(de)(de)圖形用戶界面(mian),此(ci)后則(ze)逐漸擴(kuo)展適用到各(ge)形各(ge)色的(de)(de)其他操(cao)作系(xi)(xi)統(tong)上。現在幾乎(hu)所有的(de)(de)操(cao)作系(xi)(xi)統(tong)都(dou)能支持與使用X。更重要的(de)(de)是,今日知名的(de)(de)桌面(mian)環境(jing)——GNOME和KDE也都(dou)是以X Window系(xi)(xi)統(tong)為基礎(chu)建構成的(de)(de)。 二.X-Window的(de)發展歷史 知曉過(guo)去才能明白現在(zai),預見(jian)將來(lai),我們(men)需要(yao)清楚的了解X-Window的發展歷史,盡管這有些曲折(zhe)。 1、 前身: 
	事實上,早在X出現前已有幾個位圖式的軟件顯示系統已經存在,例如帕洛阿爾托研究中心(施樂公司)提出的Alto(1973年)和Star(1981年)、蘋果計算機提出的Lisa(1983年)和麥金塔(1984年)、在UNIX世界也有雅典娜工程(1982年)和Rob Pike的Blit終端機(1984年)。 2、 起源: X-Window于1984年在(zai)麻省理工學院(MIT)電腦科學研(yan)究室開(kai)始(shi)開(kai)發(fa)的(de),當時Bob Scheifler正在(zai)發(fa)展分(fen)散式系(xi)統(tong)(distributed system),同一(yi)時間DEC公司的(de) Jim Gettys 正在(zai)麻省理工學院Athena計劃的(de)一(yi)部分(fen)。兩(liang)個計劃都(dou)需要一(yi)個相同的(de)東西——一(yi)套UNIX機器(qi)上運(yun)行優良的(de)視窗系(xi)統(tong)。因此合作關系(xi)開(kai)始(shi)展開(kai),他(ta)們從(cong)斯坦(tan)福(Stanford)大學得到了一(yi)套叫做W的(de)實(shi)驗性視窗系(xi)統(tong)。因為(wei)是根據W視窗系(xi)統(tong)的(de)基礎開(kai)始(shi)發(fa)展的(de),當發(fa)展到了足以和(he)原(yuan)先(xian)系(xi)統(tong)有明(ming)顯區別時,他(ta)們把這個新系(xi)統(tong)叫做X。 3、版本(ben)發(fa)展歷(li)史(shi) 
 (注:X11協(xie)議(yi)設計由Scheifler,并在(zai)nascent Internet的開(kai)放郵(you)件列(lie)表(biao)上廣泛討論。于(yu)是X成為早的較大(da)規模的開(kai)源軟件項(xiang)目之一) 4、 對X-Window的管理歷史 1)MIT X協(xie)會(hui)與X協(xie)會(hui)公司 1987年,隨著X11取(qu)得明顯(xian)成(cheng)功,MIT希望免除X的管理(li)責任(ren)。但是(shi)1987年6月(yue)與(yu)9個廠商(shang)舉行會(hui)(hui)晤,這(zhe)些(xie)廠商(shang)表(biao)示他(ta)們相(xiang)信為(wei)了避(bi)免 X 由于商(shang)業(ye)因素而(er)(er)分(fen)裂,需要中立(li)方的參與(yu)。1988年1月(yue),X協(xie)會(hui)(hui)(X Consortium)做(zuo)為(wei)非(fei)(fei)營利廠商(shang)團體而(er)(er)成(cheng)立(li),由Scheifler擔任(ren)主管,而(er)(er)Keith Packard擔任(ren)高級(ji)開發(fa)人(ren)員,確保(bao) X 能持(chi)續以中立(li)超然的立(li)場提供(gong)商(shang)業(ye)與(yu)學術(shu)教(jiao)育所需的開發(fa)。1993年,X協(xie)會(hui)(hui)公司(X Consortium, Inc.;非(fei)(fei)營利性質的公司)做(zuo)為(wei)MIT X協(xie)會(hui)(hui)的接繼(ji)者而(er)(er)成(cheng)立(li) 2)開放團體 1997年中,X Consortium將X的(de)管(guan)理交給開放團體(ti)(The Open Group),而它(ta)是1996年由開源軟件(jian)基金會(hui)(Open Software Foundation;OSF)和X/Open合并成立(li)的(de)廠(chang)商團體(ti)。 3)X.Org 1999年(nian)5月開放(fang)團(tuan)體組建了X.Org。X.Org指導了X11R6.5.1之(zhi)前的(de)版本發(fa)布。在此期間X的(de)開發(fa)死氣(qi)沉(chen)沉(chen)。2003年(nian),隨著(zhu)Linux的(de)流行X被大量(liang)安裝。但是X.Org幾乎無(wu)聲(sheng)無(wu)息,活(huo)躍的(de)開發(fa)由XFree86承擔。 4)XFree86 在1989年(nian)至1990年(nian)期間(jian),托馬斯?羅爾把X11R4分類器上提供的X服務器程序的源代碼下載到(dao)運行速度僅為33MHz的386PC 上,成(cheng)功(gong)運行了被他稱為是(shi)X38611.1的X服務器。這就是(shi)XFree86的雛形。 1992年(nian)后多數技術創新都發生(sheng)在XFree86項目中。1999年(nian),由于眾多對(dui)于XFree86在Linux上應用有興趣的硬件廠商的推動,并也(ye)已經(jing)成(cheng)為普及的X版本,XFree86成(cheng)為X.Org的榮譽成(cheng)員(不付費)。 但是(shi)自2003年(nian)(nian)開(kai)(kai)始(shi),XFree86內部卻發(fa)生(sheng)了爭論。它被認(ren)為太教堂式了,如同它的開(kai)(kai)發(fa)模式;開(kai)(kai)發(fa)者不能(neng)通過(guo)CVS做提交,而(er)廠商被迫維(wei)護大量(liang)補(bu)丁。2003年(nian)(nian)3月,自從(cong)初(chu)的MIT X Consortium結束之后就參加XFree86的Keith Packard由于被認(ren)為態(tai)度不良而(er)被驅(qu)逐 X.Org和(he)XFree86開(kai)(kai)始討(tao)論(lun)(lun)能夠有助于X開(kai)(kai)發(fa)的(de)(de)重組(zu)Jim Gettys早(zao)在(zai)2000年就(jiu)熱心于開(kai)(kai)放(fang)(fang)的(de)(de)開(kai)(kai)發(fa)模式。Gettys、Packard和(he)其他幾個人開(kai)(kai)始討(tao)論(lun)(lun)有效管理X和(he)開(kai)(kai)放(fang)(fang)式開(kai)(kai)發(fa)的(de)(de)細節。 終就像(xiang)是(shi)X11R6.4許(xu)(xu)(xu)(xu)可(ke)證(zheng)爭議的(de)(de)(de)回響,XFree86于2004年2月在更加嚴格許(xu)(xu)(xu)(xu)可(ke)證(zheng)下(xia)發(fa)布(bu)了4.4 。許(xu)(xu)(xu)(xu)多(duo)依賴X的(de)(de)(de)項目認為(wei)該許(xu)(xu)(xu)(xu)可(ke)證(zheng)無法接受,特別是(shi)它(ta)和GNU General Public License不兼容。 這(zhe)引起(qi)一場論戰,許(xu)(xu)(xu)(xu)多(duo)人(ren)認為(wei)到了該對XFree86分叉(fork)的(de)(de)(de)時候了,許(xu)(xu)(xu)(xu)多(duo)Linux發(fa)行版,包括Fedora、Gentoo都紛紛在新的(de)(de)(de)版本(ben)中使用X.Org基金會的(de)(de)(de)發(fa)布(bu)代替(ti)XFree86。 5)X.Org基金會 2004年(nian)年(nian)初X.Org基(ji)金會(hui)成(cheng)立。這意味(wei)著(zhu) X 在管(guan)理上(shang)的(de)(de)(de)根本轉變(bian)。1988年(nian)以來 X 的(de)(de)(de)管(guan)理者(包括過去的(de)(de)(de)X.Org)都是廠商組織,而基(ji)金會(hui)由(you)軟(ruan)件(jian)開(kai)發(fa)者,采用依靠外部參與的(de)(de)(de)集市(shi)模(mo)式的(de)(de)(de)社區(qu)開(kai)發(fa)。其成(cheng)員身份(fen)對(dui)個(ge)人開(kai)放(fang),法人成(cheng)員則成(cheng)為贊(zan)助者。X.Org還開(kai)始同freedesktop.org密切合(he)作(zuo) 三.X的設計(ji)原則 
	X的設計原則,早在初仍在麻省理工學院的階段(1984年)就已經成形,由Bob Scheifler和Jim Gettys兩人制訂出X早的開發、強化、改進原則,原則大體如下: 之后(hou),上述原(yuan)(yuan)則(ze)中(zhong)的(de)(de)(de)第(di)一項原(yuan)(yuan)則(ze)在設計X11時被加(jia)以修改,修訂(ding)成:“除(chu)非已有(you)真(zhen)正(zheng)的(de)(de)(de)應用程序,真(zhen)的(de)(de)(de)需(xu)要X為(wei)其修訂(ding)、增訂(ding)等支持,否(fou)則(ze)不會為(wei)X增加(jia)新功能(neng)。”X基本上一直(zhi)遵循這些原(yuan)(yuan)則(ze),參考實現的(de)(de)(de)擴展及(ji)改進也是以此(ci)原(yuan)(yuan)則(ze)的(de)(de)(de)角度來著手,也因(yin)為(wei)奉行上述原(yuan)(yuan)則(ze),使至今的(de)(de)(de)新版(ban)X仍能(neng)與初(1987年)發布的(de)(de)(de)協議標準近乎完全兼容。 這(zhe)些(xie)原則性的東西短(duan)短(duan)幾句話,就為(wei)一個(ge)(ge)龐大項(xiang)目(mu)奠定了一個(ge)(ge)良好的基調和(he)發展方向,使X問世以(yi)來經久(jiu)不衰(shuai),沒有這(zhe)幾個(ge)(ge)原則是做不到的。 四.X-Window的功(gong)能 
	注:這部分內容轉載自//blog.csdn.net/absurd/category/336948.aspx X-Window提供了一組(zu)非常(chang)底層的(de)服(fu)務,客(ke)戶端(duan)程(cheng)序發(fa)送請求給X-Window, X Window根據請求完(wan)成(cheng)相應服(fu)務。通(tong)過這些服(fu)務,客(ke)戶端(duan)程(cheng)序可以構建期(qi)望的(de)用戶界面。根據不同的(de)功能,可以把(ba)這些服(fu)務分為以下幾大類: 1、處理輸入 X-Window從(cong)鍵盤和鼠(shu)標接受(shou)(shou)輸(shu)入,這些輸(shu)入數據被當作”事件(jian)(jian)”傳送給適當的客(ke)戶(hu)端程序(xu)。至于哪個(ge)窗口(kou)(kou)應該接受(shou)(shou)到這些事件(jian)(jian),是依(yi)賴(lai)于窗口(kou)(kou)管理器的(窗口(kou)(kou)管理器實際上也是一個(ge)客(ke)戶(hu)端),典型的事件(jian)(jian)包(bao)括按鍵,鼠(shu)標移動,鼠(shu)標按下/放(fang)開等。 輸(shu)入設備(bei)往(wang)往(wang)是與硬件(jian)(jian)平臺相(xiang)關的(de)(de),而且又是獨占資源(yuan),所(suo)以用(yong)(yong)X-Window管(guan)理(li)是理(li)所(suo)當然的(de)(de)。應用(yong)(yong)程(cheng)序通(tong)常不(bu)需要(yao)關心具體(ti)的(de)(de)設備(bei),只要(yao)處理(li)相(xiang)應的(de)(de)事(shi)(shi)件(jian)(jian)就行(xing)了,像mouse和筆點(dian)可能發出(chu)同樣(yang)的(de)(de)事(shi)(shi)件(jian)(jian),而應用(yong)(yong)程(cheng)序不(bu)用(yong)(yong)區(qu)分它們。輸(shu)入事(shi)(shi)件(jian)(jian)也可以通(tong)過XTest擴展(zhan),由(you)軟件(jian)(jian)模擬(ni)出(chu)來(lai)的(de)(de)(通(tong)常用(yong)(yong)來(lai)實現軟件(jian)(jian)鍵盤) 2、按(an)層次形(xing)組織(zhi)窗口(kou) X-Window提供服(fu)務讓客戶(hu)端(duan)程序創建/銷毀(hui)窗(chuang)口(kou),所謂(wei)的窗(chuang)口(kou)就是(shi)屏幕上(shang)的矩形區域,它是(shi)可以(yi)層(ceng)(ceng)層(ceng)(ceng)嵌套的,有(you)很多操作可以(yi)作用(yong)于窗(chuang)口(kou)(如,查詢或改變窗(chuang)口(kou)的大小和(he)位置等(deng)),X-Window的主要功能之一就是(shi)負責(ze)管理(li)這種按層(ceng)(ceng)次形組(zu)織(zhi)的窗(chuang)口(kou)。 不(bu)過(guo)X-Window管理這些窗(chuang)(chuang)口是(shi)(shi)被動進(jin)行的(de),由窗(chuang)(chuang)口管理器根據用戶的(de)行為決定。它請求(qiu)X-Window做相應的(de)動作,比如(ru)移動窗(chuang)(chuang)口,調整窗(chuang)(chuang)口的(de)大(da)小(xiao),改變(bian)窗(chuang)(chuang)口的(de)前后關系等(deng)等(deng)。第一次(ci)接觸X-Window時,得(de)知窗(chuang)(chuang)口管理器是(shi)(shi)一個普(pu)通的(de)客戶端時,我覺得(de)驚訝(ya),這種設計真(zhen)是(shi)(shi)太先進(jin)了(le),其實它正是(shi)(shi)遵循了(le)提(ti)供(gong)機制而不(bu)是(shi)(shi)策(ce)略這一原則。 現在已經有(you)(you)(you)很多窗口(kou)管理(li)器的實現可用,它們提供不同的風格和功(gong)能,有(you)(you)(you)的用于PC,有(you)(you)(you)的用于嵌(qian)入(ru)(ru)式系統,像matchbox就是(shi)在嵌(qian)入(ru)(ru)式上比較(jiao)流(liu)行的,像Nokia的N770/N800就是(shi)用的matchbox。 3、提供(gong)圖形操(cao)作 X-Window提供(gong)了(le)一些基本(ben)的畫(hua)(hua)圖操作(zuo)(zuo),如畫(hua)(hua)直線、矩形(xing)、圓弧和多邊形(xing)等。 這些圖形(xing)的顏(yan)色、線寬、填(tian)充類型都(dou)可(ke)以由客(ke)戶端程(cheng)序指(zhi)定。X-Window同時提供(gong)了(le)許(xu)多位(wei)圖操作(zuo)(zuo),這些位(wei)圖操作(zuo)(zuo)可(ke)以作(zuo)(zuo)用于了(le)窗口的各個區域。 X-Winwod還會充分挖掘硬(ying)件的(de)加速特性(xing),像填充、畫直線和圖像疊加等操作(zuo),如果(guo)硬(ying)件支持相應(ying)的(de)加速功(gong)能,就可以通過硬(ying)件實(shi)(shi)現,否則就用(yong)軟件實(shi)(shi)現。 4、提供文本和字體操作(zuo) X-Window提供(gong)了字(zi)體(ti)相關的操作。客戶端程(cheng)序(xu)可(ke)以(yi)請求X-window在(zai)指定(ding)的區域用(yong)指定(ding)的字(zi)體(ti)顯示指定(ding)的字(zi)符串,當然在(zai)此之前應該請求X-window加載字(zi)體(ti),加載后客戶端程(cheng)序(xu)可(ke)以(yi)得到關于(yu)字(zi)體(ti)的一些信息。 實際上(shang),這一功(gong)能由于客(ke)戶(hu)端(duan)字(zi)體繪(hui)制的(de)(de)流行,而大大弱化了,現在(zai)的(de)(de)字(zi)體差不多都是在(zai)客(ke)戶(hu)端(duan)繪(hui)制好后,再通過X Render擴展顯示到X-Window去的(de)(de)。在(zai)fontconfig/freetype/pango/cairo的(de)(de)幫助,在(zai)客(ke)戶(hu)端(duan)繪(hui)制字(zi)體更容(rong)易使用。 
 名詞解釋: 位圖: 位(wei)(wei)圖(Bitmap),又稱光(guang)柵圖(Raster graphics),是使用像素陣列來表示的圖像,每個像素的色(se)彩信息(xi)由RGB組(zu)合或者(zhe)灰度值表示。根(gen)據顏色(se)信息(xi)所(suo)需的數(shu)據位(wei)(wei)分為1、4、8、16、24及(ji)32位(wei)(wei)等,位(wei)(wei)數(shu)越(yue)(yue)高顏色(se)越(yue)(yue)豐富,相應(ying)的數(shu)據量越(yue)(yue)大(da)。其中使用1位(wei)(wei)表示一個像素顏色(se)的位(wei)(wei)圖因為一個數(shu)據位(wei)(wei)只能表示兩(liang)種顏色(se),所(suo)以又稱為二值位(wei)(wei)圖。通常使用24位(wei)(wei)RGB組(zu)合數(shu)據位(wei)(wei)表示的的位(wei)(wei)圖稱為真彩色(se)位(wei)(wei)圖。 視窗系統: 視窗系(xi)(xi)統(tong)(tong)(Windowing system) 是(shi)“使(shi)用(yong)視窗當作它的(de)主要(yao)象征之一(yi)”的(de) 圖形使(shi)用(yong)者接口(kou)的(de)構(gou)成元(yuan)(yuan)件(jian)(jian)。更為明(ming)確(que)的(de)說(shuo),是(shi)桌(zhuo)面環(huan)境的(de)構(gou)成元(yuan)(yuan)件(jian)(jian)。視窗系(xi)(xi)統(tong)(tong)支撐著視窗管(guan)理(li)員的(de)實現(implementation);對于(yu)“圖像硬件(jian)(jian)(graphics hardware)、指(zhi)向裝(zhuang)置(zhi)(zhi)(pointing devices)比如鼠(shu)標(biao)與鍵盤等裝(zhuang)置(zhi)(zhi)”提(ti)供基本支持。繪(hui)制鼠(shu)標(biao)光(guang)標(biao),一(yi)般(ban)也(ye)與視窗系(xi)(xi)統(tong)(tong)相關(guan)。 從程式設計師(shi)的(de)觀(guan)點(dian)來看,視(shi)窗系統是(shi)(shi)作出繪(hui)圖的(de)基本單位(wei),比如字型繪(hui)制,或是(shi)(shi)在屏幕上劃線(xian),有效地提(ti)供(gong)繪(hui)圖硬(ying)件的(de)一種抽(chou)象概念。 視(shi)(shi)(shi)窗(chuang)(chuang)系(xi)統能讓電(dian)腦(nao)使用(yong)(yong)者同(tong)時與數個(ge)(ge)程式一起工作(zuo)。每個(ge)(ge)程式在他自(zi)己的(de)(de)(de)視(shi)(shi)(shi)窗(chuang)(chuang)中執行,也就是屏(ping)幕上的(de)(de)(de)矩形(xing)之中。大部份(fen)的(de)(de)(de)視(shi)(shi)(shi)窗(chuang)(chuang)系(xi)統允許(xu)視(shi)(shi)(shi)窗(chuang)(chuang)重疊,且提供使用(yong)(yong)者執行標準的(de)(de)(de)操作(zuo),像(xiang)是移動/改(gai)變視(shi)(shi)(shi)窗(chuang)(chuang)尺(chi)寸,把視(shi)(shi)(shi)窗(chuang)(chuang)送到前景(jing)/背景(jing),和小化(hua)/大化(hua)一個(ge)(ge)視(shi)(shi)(shi)窗(chuang)(chuang)。 有(you)些視窗系(xi)統,像(xiang)是 X,有(you)先進的能(neng)力比如網絡通透性,允許使用者(zhe)在遠端(duan)機器上(shang)執行(xing)圖(tu)形的應用程(cheng)式。 雅典娜工程: 雅典娜工(gong)程(cheng)是MIT、DEC以(yi)及IBM的(de)一(yi)(yi)個(ge)聯合工(gong)程(cheng),歷(li)時八年,于1991年6月(yue)30日(ri)告一(yi)(yi)段落。該工(gong)程(cheng)意圖建立一(yi)(yi)個(ge)計算機(ji)環境,容納多達一(yi)(yi)萬臺工(gong)作(zuo)站,以(yi)及各(ge)種(zhong)硬件。用戶可以(yi)訪問其(qi)中的(de)任何(he)工(gong)作(zuo)站,存取任何(he)文件、程(cheng)序,但在(zai)用戶界(jie)面(mian)以(yi)及服務傳遞上,看起來不會(hui)有大的(de)區別。 這個工程產生了許多現(xian)在被(bei)廣為(wei)使用(yong)的技術,比如(ru)X Window System、Kerberos。雅典娜(na)工程開發(fa)的其他技術包括Xaw部(bu)件(jian)工具箱、Zephyr通知服務(wu)(wu)、第一個即時通訊服務(wu)(wu),以(yi)及Hesiod名(ming),還有(you)目(mu)錄服務(wu)(wu)。 
 
 發表評論 
 |