當前位置:首頁 > 嵌入式 > 嵌入式軟件
[導(dǎo)讀]Linux圖形界面中客戶端、服務(wù)器、窗口管理器之間的關(guān)系

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

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

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

二、X的概念

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

三、X11、X11R6的概念

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

四、XFree86是什么?

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

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

五、WM(window manager 窗口管理器)

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

#STartx

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

#xinit

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

#mozill

打開瀏覽器,您看到的瀏覽器和平時有什么不同嗎?他在屏幕中間,不能移動,不能最小化,不能最大化,沒有邊框。

為什么同樣一個X應(yīng)用程式會有這樣的不同呢?因為我們用startx起動圖像界面的時候同時也啟動了一個WM(即窗口管理器),假如您用KDE就起動了 KDE,假如您用GNOME就起動了GNOME。但是您用xinit起動圖像界面的時候卻沒有起動WM 。

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

xterm被加上了一個邊框,您能夠通過這個邊框移動、最大化、最小化這個xterm。twm就是XFree86中自帶的窗口管理器,是個比較簡陋的最簡單的窗口管理器,但是他具備窗口管理器的全部特征。

六、KDE和GNOME

KDE 和GNOME是LINUX里最常用的圖像界面操作環(huán)境,他們不但僅是個窗口管理器那么簡單, KDE是K Desktop EnvirONment 的縮寫,他不但是個窗口管理器,更有很多配套的應(yīng)用軟件和方便使用的桌面環(huán)境,比如任務(wù)欄,開始菜單,桌面圖標等等。GNOME是GNU Network Object Model Environment 的縮寫,和KDE相同,也是個功能強大的綜合環(huán)境。

七、QT、QT/E、Qtopia

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

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

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

#./hello –qws

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

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

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

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

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

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

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

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

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

◆ 映射顯存

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

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

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

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

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

DirectFB也需要窗口管理器。DirectFB采用模塊化設(shè)計,它并不依賴于某種具體的窗口管理器,只要具體的窗口管理器實現(xiàn)接口DirectFB中的CoreWMFuncs中定義的函數(shù),就可以掛到DirectFB中運行。DirectFB自帶有兩個窗口管理器:default和unique,可以在配置文件中用wm=xxx來選擇用哪一個作為當前的窗口管理器。

通過上面8個方面,介紹了X、X11、Xfree86、WM、KDE、GNOME、QT、QT/E、Qtopia、DirectFB、Framebuffer、顯卡加速驅(qū)動等概念及它們的一些關(guān)系。供大家參考。

本站聲明: 本文章由作者或相關(guān)機構(gòu)授權(quán)發(fā)布,目的在于傳遞更多信息,并不代表本站贊同其觀點,本站亦不保證或承諾內(nèi)容真實性等。需要轉(zhuǎn)載請聯(lián)系該專欄作者,如若文章內(nèi)容侵犯您的權(quán)益,請及時聯(lián)系本站刪除。
換一批
延伸閱讀

9月2日消息,不造車的華為或?qū)⒋呱龈蟮莫毥谦F公司,隨著阿維塔和賽力斯的入局,華為引望愈發(fā)顯得引人矚目。

關(guān)鍵字: 阿維塔 塞力斯 華為

加利福尼亞州圣克拉拉縣2024年8月30日 /美通社/ -- 數(shù)字化轉(zhuǎn)型技術(shù)解決方案公司Trianz今天宣布,該公司與Amazon Web Services (AWS)簽訂了...

關(guān)鍵字: AWS AN BSP 數(shù)字化

倫敦2024年8月29日 /美通社/ -- 英國汽車技術(shù)公司SODA.Auto推出其旗艦產(chǎn)品SODA V,這是全球首款涵蓋汽車工程師從創(chuàng)意到認證的所有需求的工具,可用于創(chuàng)建軟件定義汽車。 SODA V工具的開發(fā)耗時1.5...

關(guān)鍵字: 汽車 人工智能 智能驅(qū)動 BSP

北京2024年8月28日 /美通社/ -- 越來越多用戶希望企業(yè)業(yè)務(wù)能7×24不間斷運行,同時企業(yè)卻面臨越來越多業(yè)務(wù)中斷的風(fēng)險,如企業(yè)系統(tǒng)復(fù)雜性的增加,頻繁的功能更新和發(fā)布等。如何確保業(yè)務(wù)連續(xù)性,提升韌性,成...

關(guān)鍵字: 亞馬遜 解密 控制平面 BSP

8月30日消息,據(jù)媒體報道,騰訊和網(wǎng)易近期正在縮減他們對日本游戲市場的投資。

關(guān)鍵字: 騰訊 編碼器 CPU

8月28日消息,今天上午,2024中國國際大數(shù)據(jù)產(chǎn)業(yè)博覽會開幕式在貴陽舉行,華為董事、質(zhì)量流程IT總裁陶景文發(fā)表了演講。

關(guān)鍵字: 華為 12nm EDA 半導(dǎo)體

8月28日消息,在2024中國國際大數(shù)據(jù)產(chǎn)業(yè)博覽會上,華為常務(wù)董事、華為云CEO張平安發(fā)表演講稱,數(shù)字世界的話語權(quán)最終是由生態(tài)的繁榮決定的。

關(guān)鍵字: 華為 12nm 手機 衛(wèi)星通信

要點: 有效應(yīng)對環(huán)境變化,經(jīng)營業(yè)績穩(wěn)中有升 落實提質(zhì)增效舉措,毛利潤率延續(xù)升勢 戰(zhàn)略布局成效顯著,戰(zhàn)新業(yè)務(wù)引領(lǐng)增長 以科技創(chuàng)新為引領(lǐng),提升企業(yè)核心競爭力 堅持高質(zhì)量發(fā)展策略,塑強核心競爭優(yōu)勢...

關(guān)鍵字: 通信 BSP 電信運營商 數(shù)字經(jīng)濟

北京2024年8月27日 /美通社/ -- 8月21日,由中央廣播電視總臺與中國電影電視技術(shù)學(xué)會聯(lián)合牽頭組建的NVI技術(shù)創(chuàng)新聯(lián)盟在BIRTV2024超高清全產(chǎn)業(yè)鏈發(fā)展研討會上宣布正式成立。 活動現(xiàn)場 NVI技術(shù)創(chuàng)新聯(lián)...

關(guān)鍵字: VI 傳輸協(xié)議 音頻 BSP

北京2024年8月27日 /美通社/ -- 在8月23日舉辦的2024年長三角生態(tài)綠色一體化發(fā)展示范區(qū)聯(lián)合招商會上,軟通動力信息技術(shù)(集團)股份有限公司(以下簡稱"軟通動力")與長三角投資(上海)有限...

關(guān)鍵字: BSP 信息技術(shù)
關(guān)閉
關(guān)閉