Linux圖形界面中客戶(hù)端、服務(wù)器、窗口管理器之間的關(guān)系-基礎(chǔ)電子_第1頁(yè)
Linux圖形界面中客戶(hù)端、服務(wù)器、窗口管理器之間的關(guān)系-基礎(chǔ)電子_第2頁(yè)
Linux圖形界面中客戶(hù)端、服務(wù)器、窗口管理器之間的關(guān)系-基礎(chǔ)電子_第3頁(yè)
Linux圖形界面中客戶(hù)端、服務(wù)器、窗口管理器之間的關(guān)系-基礎(chǔ)電子_第4頁(yè)
Linux圖形界面中客戶(hù)端、服務(wù)器、窗口管理器之間的關(guān)系-基礎(chǔ)電子_第5頁(yè)
已閱讀5頁(yè),還剩3頁(yè)未讀, 繼續(xù)免費(fèi)閱讀

下載本文檔

版權(quán)說(shuō)明:本文檔由用戶(hù)提供并上傳,收益歸屬內(nèi)容提供方,若內(nèi)容存在侵權(quán),請(qǐng)進(jìn)行舉報(bào)或認(rèn)領(lǐng)

文檔簡(jiǎn)介

精品文檔-下載后可編輯Linux圖形界面中客戶(hù)端、服務(wù)器、窗口管理器之間的關(guān)系-基礎(chǔ)電子作者:劉洪濤,華清遠(yuǎn)見(jiàn)嵌入式學(xué)院講師,ARMATC授權(quán)培訓(xùn)講師。

很多LINUX初學(xué)者在學(xué)習(xí)linux圖形方面的知識(shí)時(shí)會(huì)遇到一些概念,如:X、X11、Xfree86、WM、KDE、GNOME、QT、QT/E、Qtopia、DirectFB、Framebuffer、顯卡加速驅(qū)動(dòng)等等。理解它們之間是什么關(guān)系,對(duì)我們學(xué)習(xí)來(lái)說(shuō)是非常重要的。寫(xiě)這篇文章的目的,就是想讓大家明晰這些概念及它們之間的關(guān)系。(部分內(nèi)容引用網(wǎng)絡(luò)上的一些描述比較清晰的內(nèi)容)

一、Linux操作系統(tǒng)和圖形的關(guān)系

linux本身沒(méi)有圖像界面,linux現(xiàn)在的圖像界面的實(shí)現(xiàn)只是linux下的應(yīng)用程序?qū)崿F(xiàn)的。圖像界面并不是linux的一部分,linux只是個(gè)基于命令行的操作系統(tǒng)。Linux內(nèi)核為linux系統(tǒng)中的圖形界面提供了顯示設(shè)備驅(qū)動(dòng)。

二、X的概念

X是協(xié)議,就像HTTP協(xié)議,IP協(xié)議。這個(gè)概念很多初學(xué)者甚至學(xué)習(xí)LINUX有一定時(shí)間的人都混淆,一個(gè)基于X的應(yīng)用程序需要運(yùn)行并顯示內(nèi)容時(shí),他就聯(lián)接到X服務(wù)器,開(kāi)始用X協(xié)議和服務(wù)器交談。比如一個(gè)X應(yīng)用程序(XClient)要在屏幕上輸出一個(gè)圓,那么他就用X協(xié)議對(duì)X服務(wù)器說(shuō):喂!我需要在屏幕上畫(huà)一個(gè)圓。X應(yīng)用程序只負(fù)責(zé)告訴X服務(wù)器在屏幕的什么地方用什么顏色畫(huà)一個(gè)多大的圓,而具體的"畫(huà)"的動(dòng)作,比如這個(gè)圓怎樣生成,用什么顯卡的驅(qū)動(dòng)程式去指揮顯卡完成等等工作是由X服務(wù)器來(lái)完成的。X服務(wù)器還負(fù)責(zé)捕獲鍵盤(pán)和鼠標(biāo)的動(dòng)作。假設(shè)X服務(wù)器捕獲到鼠標(biāo)的左鍵被按下了,他就告訴X應(yīng)用程序:親愛(ài)的應(yīng)用程序先生,我發(fā)現(xiàn)鼠標(biāo)被按下了,您有什么指示嗎?假如X應(yīng)用程序被設(shè)計(jì)成當(dāng)按下鼠標(biāo)左健后再在屏幕上畫(huà)一個(gè)正方形的話(huà),X應(yīng)用程式就對(duì)X服務(wù)器說(shuō):請(qǐng)?jiān)佼?huà)一個(gè)正方形,當(dāng)然他會(huì)告訴服務(wù)器在什么地方用什么顏色畫(huà)多大的正方形,但不關(guān)心具體怎么畫(huà)--那是服務(wù)器的事情。

三、X11、X11R6的概念

X11表示X協(xié)議的第16版。X11R6是X協(xié)議第11版第六次發(fā)行。

四、XFree86是什么?

XFree86是XWindowsserver的X11R6執(zhí)行程序。有了協(xié)議就需要具體的軟件來(lái)實(shí)現(xiàn)這個(gè)協(xié)議。Xfree86是按照X協(xié)議的規(guī)定來(lái)完成X應(yīng)用程序提交的在屏幕上顯示的任務(wù)。實(shí)現(xiàn)X協(xié)議的軟件也并不只有XFree86,XFree86只是實(shí)現(xiàn)X協(xié)議的一個(gè)X服務(wù)器軟件。有些甚至能夠在WINDOWS上有X服務(wù)器運(yùn)行,這樣您能夠在linux系統(tǒng)上運(yùn)行一個(gè)X應(yīng)用程序然后在另一臺(tái)windows系統(tǒng)上顯示。只是在LINUX上常用的是XFree86。不過(guò)現(xiàn)在的linux發(fā)行版大多用Xorg了。

XFree86內(nèi)容包括X服務(wù)器,字體,一個(gè)X下的終端程序(xterm),一個(gè)簡(jiǎn)單的窗口管理器(twm),很多有用的小工具,顯示輸出驅(qū)動(dòng)和包括鍵盤(pán)鼠標(biāo)在內(nèi)的許多輸入模塊。

五、WM(windowmanager窗口管理器)

在紅帽系統(tǒng)中,可以設(shè)置啟動(dòng)級(jí)別3,進(jìn)入命令行終端,然后運(yùn)行:

#startx

起動(dòng)圖像界面,您看到的是個(gè)和平時(shí)使用相同的完整的圖像界面操作環(huán)境。能夠化,化,移動(dòng),關(guān)閉窗口等。按ctrl+alt+backspace反回字符界面。輸入:

#xinit

再次啟動(dòng)圖像界面,您看到了什么,您看到一個(gè)XTERM(一個(gè)運(yùn)行于X下的終端程序)。而且不能移動(dòng)。但是您能夠在這個(gè)XTERM中輸入命令打開(kāi)X應(yīng)用程序,假如輸入:

#mozill

打開(kāi)瀏覽器,您看到的瀏覽器和平時(shí)有什么不同嗎?他在屏幕中間,不能移動(dòng),不能化,不能化,沒(méi)有邊框。

為什么同樣一個(gè)X應(yīng)用程式會(huì)有這樣的不同呢?因?yàn)槲覀冇胹tartx起動(dòng)圖像界面的時(shí)候同時(shí)也啟動(dòng)了一個(gè)WM(即窗口管理器),假如您用KDE就起動(dòng)了KDE,假如您用GNOME就起動(dòng)了GNOME。但是您用xinit起動(dòng)圖像界面的時(shí)候卻沒(méi)有起動(dòng)WM。

窗口管理器的作用就是化、化、移動(dòng)、關(guān)閉窗口等。而這些不是X服務(wù)器來(lái)負(fù)責(zé)完成的。假如您用xinit起動(dòng)圖像界面并在xterm中輸入twm,看看會(huì)有什么?

xterm被加上了一個(gè)邊框,您能夠通過(guò)這個(gè)邊框移動(dòng)、化、化這個(gè)xterm。twm就是XFree86中自帶的窗口管理器,是個(gè)比較簡(jiǎn)陋的簡(jiǎn)單的窗口管理器,但是他具備窗口管理器的全部特征。

六、KDE和GNOME

KDE和GNOME是LINUX里常用的圖像界面操作環(huán)境,他們不但僅是個(gè)窗口管理器那么簡(jiǎn)單,KDE是KDesktopEnvironment的縮寫(xiě),他不但是個(gè)窗口管理器,更有很多配套的應(yīng)用軟件和方便使用的桌面環(huán)境,比如任務(wù)欄,開(kāi)始菜單,桌面圖標(biāo)等等。GNOME是GNUNetworkObjectModelEnvironment的縮寫(xiě),和KDE相同,也是個(gè)功能強(qiáng)大的綜合環(huán)境。

七、QT、QT/E、Qtopia

Trolltec(奇趣)的QT產(chǎn)品有很多,如:QT、QT/E、Qtopia等。目前為諾基亞所有。

QT泛指QT的所有桌面版本,如:QT/X11,QTWindows,QtMac等。由于QT早是在Linux中隨KDE流行而來(lái),所有通常認(rèn)為QT都是基于linux下的QT/X11。QT是一個(gè)完整的C++應(yīng)用程序開(kāi)發(fā)框架。它包含一個(gè)類(lèi)庫(kù),和用于跨平臺(tái)開(kāi)發(fā)及國(guó)際化的工具。QtAPI在所有支持的平臺(tái)上都是相同的,Qt工具在這些平臺(tái)上的使用方式也一致,因而Qt應(yīng)用的開(kāi)發(fā)和部署與平臺(tái)無(wú)關(guān)。在桌面系統(tǒng)中,QT程序通常是符合X協(xié)議的應(yīng)用程序,它需要X服務(wù)器的支持。

QT/E是用于嵌入式Linux系統(tǒng)的QT版本。QT/E中去掉了Xlib的依賴(lài)而直接工作于Frame.Buffer上,因而應(yīng)用程序處理過(guò)程效率比較高。它的運(yùn)行只要有Framebuffer設(shè)備就可以了,不需要X服務(wù)器的支持。但其本身運(yùn)行也是有服務(wù)器和客戶(hù)端的概念。在服務(wù)器沒(méi)有啟動(dòng)前運(yùn)行QT/E程序,需要在加“-qws”來(lái)啟動(dòng)服務(wù)器。如:

#./hello–qws

在QT4以后,QT/E改名位QtopiaCore了,并且集成到Qtopia成品中去了。

QT/E是Frame.Buffer設(shè)備運(yùn)行的。具有簡(jiǎn)潔、高效等特點(diǎn)。但是了解Frame.Buffer設(shè)備的工程師會(huì)發(fā)現(xiàn),F(xiàn)rame.Buffer設(shè)備無(wú)法實(shí)現(xiàn)硬件加速功能。這也限制了基于Framebuffer設(shè)備的圖形解決方案的發(fā)展。事實(shí)上桌面上的XFree86默認(rèn)情況下是不支持Framebuffer設(shè)備的,XFree86直接操作顯卡,充分利用顯卡加速功能(下個(gè)主題將介紹顯卡加速方面的內(nèi)容)。XServer兼容多類(lèi)型的顯示卡,一般來(lái)講,現(xiàn)在市面上80%以上的顯示卡都能夠被這個(gè)Server支持。但有時(shí)也會(huì)有一些顯卡不能不正確設(shè)別,這時(shí)可以采用Frame.Buffer模式來(lái)支持顯示器。主要是用到了XFree86的frame.bufferServer(XF86_FBDev)。需要修改XFree86的配置文件/etc/X11/XF86Config,及在/etc/grub.conf中加入VGA=X*能。

Qtopia是一個(gè)面向嵌入式Linux的全方位應(yīng)用程序開(kāi)發(fā)平臺(tái),同時(shí)也是用于基于Linux的PDA(個(gè)人數(shù)字助理),智能電話(huà)(Smartphone)以及其他移動(dòng)設(shè)備的用戶(hù)界面。

八、DirectFB、顯卡加速驅(qū)動(dòng)

首先DirectFB類(lèi)似于桌面中的XFree86。桌面中的XFree86不需要Frame.Buffer設(shè)備,而DirectFB需要。

顯卡加速在嵌入式GUI中需要實(shí)現(xiàn)多圖形功能,包括圖形繪制以及拷貝等。其中的許多功能需要進(jìn)行大量的數(shù)據(jù)傳遞(如圖形拷貝),或者需要進(jìn)行大量的數(shù)值運(yùn)算(如畫(huà)樣條曲線(xiàn))。如果這些功能都由純軟件實(shí)現(xiàn)的話(huà),會(huì)占用大量的CPU時(shí)間并且需要傳遞大量的數(shù)據(jù),從而影響了圖形性能。許多顯卡芯片帶有圖形處理器,能夠從硬件上實(shí)現(xiàn)一部分圖形功能。支持硬件加速的圖形庫(kù)可以通過(guò)圖形處理器實(shí)現(xiàn)這些圖形功能,從而減輕了CPU的負(fù)擔(dān)并減少了數(shù)據(jù)在總線(xiàn)上的傳輸時(shí)間,提高了圖形性能。

DirectFB項(xiàng)目是由德國(guó)Convergence公司推動(dòng)的Opensource計(jì)劃的一部分,它是專(zhuān)門(mén)為滿(mǎn)足嵌入式設(shè)備要求而開(kāi)發(fā)的小巧、強(qiáng)大、靈活和易于使用的圖形系統(tǒng),并且試圖成為一個(gè)建構(gòu)于LinuxFramebufferDevice之上的新圖形標(biāo)準(zhǔn)。它在FrameBuffer的基礎(chǔ)上提供了圖形加速、輸入設(shè)備處理提取、透明窗口和多重顯示層的功能,能夠?qū)η度胧较到y(tǒng)GUI有較好的支持。與那些通用的嵌入式GUI系統(tǒng)相比,它具有非常簡(jiǎn)潔、高效的體系結(jié)構(gòu)和硬件圖形加速功能。

DirectFB依賴(lài)已有的內(nèi)核接口即幀緩沖設(shè)備(/dev/fb)訪(fǎng)問(wèn)圖形處理器,也就是說(shuō)DireetFB需要一個(gè)正在工作的幀緩沖驅(qū)動(dòng)。Linux內(nèi)核有專(zhuān)門(mén)的幀緩沖驅(qū)動(dòng)支持某些圖形處理器。對(duì)于不支持的圖形處理器,內(nèi)核提供VE—SA幀緩沖(這種幀緩沖有一些限制)。DirectFB利用幀緩沖設(shè)備做如下工作:

◆設(shè)置顯卡工作模式(分辨率,顏色深度,時(shí)序)

◆映射顯存

如果某種顯卡被DirecFB支持并且在Linux內(nèi)核中也有這種圖形處理器的幀緩沖驅(qū)動(dòng),DirectFB利用幀緩沖設(shè)備做如下額外的工作:

◆映射顯存IO端口(如果加速驅(qū)動(dòng)在用戶(hù)空間實(shí)現(xiàn),需要這步。如果在內(nèi)核空間實(shí)現(xiàn),則不需要映射,但需要有相應(yīng)的驅(qū)動(dòng)接口。也可以重新寫(xiě)一個(gè)驅(qū)動(dòng)程序來(lái)專(zhuān)門(mén)實(shí)現(xiàn)加速功能)

◆關(guān)閉幀緩沖驅(qū)動(dòng)中自帶的加速功能

針對(duì)具體的圖形操作(例如圖片拷貝、區(qū)域填充、區(qū)域拷貝、畫(huà)線(xiàn)、圖形拉伸等),DirectFB加速驅(qū)動(dòng)(對(duì)映射到用戶(hù)空間的控制寄存器訪(fǎng)問(wèn))訪(fǎng)問(wèn)顯存映射的圖形處理器I/O端口向圖形處理器提交命令,由顯卡來(lái)實(shí)現(xiàn)相應(yīng)的命令。也就是說(shuō)真正的硬件加速完全是在用戶(hù)空間實(shí)現(xiàn)。這樣DirectFB就可以對(duì)它支持的圖形處理器提供限度的硬件圖形加速。這些加速功能需要顯卡控制器的支持。一些嵌入式的顯示控制器中并沒(méi)有相應(yīng)的功能。需要外接顯卡來(lái)實(shí)現(xiàn)。

上層APl支持DirectFB的有:XdirectFB、DirectFBGL、GTK+、DFBTerm、DFBSee、DFBPoint、MythTV、QtonDirectFB、SDL等。

DirectFB也需要窗口管理器。DirectFB采用模塊化設(shè)計(jì),它并不依賴(lài)于某種具體的窗口管理器,只要具體的窗口管理器實(shí)現(xiàn)接口Di

溫馨提示

  • 1. 本站所有資源如無(wú)特殊說(shuō)明,都需要本地電腦安裝OFFICE2007和PDF閱讀器。圖紙軟件為CAD,CAXA,PROE,UG,SolidWorks等.壓縮文件請(qǐng)下載最新的WinRAR軟件解壓。
  • 2. 本站的文檔不包含任何第三方提供的附件圖紙等,如果需要附件,請(qǐng)聯(lián)系上傳者。文件的所有權(quán)益歸上傳用戶(hù)所有。
  • 3. 本站RAR壓縮包中若帶圖紙,網(wǎng)頁(yè)內(nèi)容里面會(huì)有圖紙預(yù)覽,若沒(méi)有圖紙預(yù)覽就沒(méi)有圖紙。
  • 4. 未經(jīng)權(quán)益所有人同意不得將文件中的內(nèi)容挪作商業(yè)或盈利用途。
  • 5. 人人文庫(kù)網(wǎng)僅提供信息存儲(chǔ)空間,僅對(duì)用戶(hù)上傳內(nèi)容的表現(xiàn)方式做保護(hù)處理,對(duì)用戶(hù)上傳分享的文檔內(nèi)容本身不做任何修改或編輯,并不能對(duì)任何下載內(nèi)容負(fù)責(zé)。
  • 6. 下載文件中如有侵權(quán)或不適當(dāng)內(nèi)容,請(qǐng)與我們聯(lián)系,我們立即糾正。
  • 7. 本站不保證下載資源的準(zhǔn)確性、安全性和完整性, 同時(shí)也不承擔(dān)用戶(hù)因使用這些下載資源對(duì)自己和他人造成任何形式的傷害或損失。

評(píng)論

0/150

提交評(píng)論