欧美性猛交XXXX免费看蜜桃,成人网18免费韩国,亚洲国产成人精品区综合,欧美日韩一区二区三区高清不卡,亚洲综合一区二区精品久久

打開(kāi)APP
userphoto
未登錄

開(kāi)通VIP,暢享免費電子書(shū)等14項超值服

開(kāi)通VIP
Cygwin系列(十二):了解X | silaoA的博客

本文共4500余字,預計閱讀時(shí)間14分鐘,本文同步發(fā)布于知乎(賬號silaoA)和微信公眾號平臺(賬號偽碼人)。

前面連續多篇折騰了終端和命令行,本篇先初步了解X,并敬請期待下一篇:在Windows上折騰X。

0x00 前言

圖形環(huán)境不是計算機系統與生俱來(lái)的,現在習慣了Windows、Mac OS的用戶(hù),對于圖形用戶(hù)界面(GUI)得心應手,然而早期的計算機系統只有個(gè)黑框框,僅少數專(zhuān)業(yè)人員能夠駕馭。一般認為,是施樂(lè )公司帕洛阿爾托研究中心 (Xerox PARC)在1973年首次研發(fā)出圖形用戶(hù)界面,具備了現代圖形環(huán)境基本元素。這個(gè)激動(dòng)人心的發(fā)明,還沒(méi)有被施樂(lè )公司好好利用起來(lái)掙錢(qián)的時(shí)候,很快被蘋(píng)果、微軟等多家公司“借鑒”,伴隨著(zhù)PC發(fā)展,各家GUI系統群雄逐鹿,沒(méi)有統一標準。

0x01 X Window System

規范

1984年MIT大學(xué)創(chuàng )造了X規范,就類(lèi)似TCP/IP協(xié)議棧一樣。本義是在UNIX系統構建圖形化視窗系統的設計方案,準確名稱(chēng)叫“X Window System”,注意拼寫(xiě)不是“Windows”,與微軟、與Windows沒(méi)任何關(guān)系。
X規范在1987年形成了第11版(Version 11),1994年發(fā)布第11版的第6次發(fā)行(Release 6),確切版本名即為“X11R6”,后來(lái)成為UNIX上圖形視窗系統標準規范,也簡(jiǎn)稱(chēng)“X11”或者“X”,目前最新版本是2012年發(fā)布的“X11R7.7”。

X11 圖源:維基百科

“X11”采用了C/S的架構,在其設計下,整個(gè)圖形視窗系統主要分為3個(gè)部分:

  • X Server(X服務(wù)器)。X Server一方面負責和設備驅動(dòng)交互,監聽(tīng)顯示器和鍵盤(pán)鼠標,另一方面響應X Client需求傳遞鍵盤(pán)、鼠標事件、(通過(guò)設備驅動(dòng))繪制圖形文字等。反直覺(jué)之一,X Server運行在本地。
  • X Client(X客戶(hù)端)。X Client也叫X應用程序,負責實(shí)現程序邏輯,在收到設備事件后計算出繪圖數據,由于本身沒(méi)有繪制能力,只能向X Server發(fā)送繪制請求和繪圖數據,告訴X Server在哪里繪制一個(gè)什么樣的圖形。X Client可以和X Server在同一個(gè)主機上,也可以通過(guò)TCP/IP網(wǎng)絡(luò )連接。
  • Window Manager(窗口管理器,簡(jiǎn)稱(chēng)WM),或者叫合成器(Compositor)。多個(gè)X Client向X Server發(fā)送繪制請求時(shí),各X Client程序并不知道彼此的存在,繪制圖形出現重疊、顏色干擾等問(wèn)題是大概率事件,這就需要一個(gè)管理者統一協(xié)調,即Window Manager,它掌管各X Client的Window(窗口)視覺(jué)外觀(guān),如形狀、排列、移動(dòng)、重疊渲染等。反直覺(jué)之二,Window Manager并非X Server的一部分,而是一個(gè)特殊的X Client程序。

3個(gè)部分, X Server是整個(gè)X Window System的中心,協(xié)調X客戶(hù)端和窗口管理器的通信。

X11的C/S架構 圖源:維基百科

“X11”充分遵循UNIX設計哲學(xué),盡可能簡(jiǎn)單,除非必要絕不新增功能,其實(shí)也意味著(zhù)粗糙、原始;提供機制而非具體策略,如菜單、按鈕等元素細節并不做規定,交給窗口管理器、客戶(hù)端程序等自主實(shí)現,于是不同的實(shí)現風(fēng)格各異。任何遵循了X11規范的客戶(hù)端程序和服務(wù)器程序配合起來(lái),即可正常運行,X11得益其開(kāi)放性,迅速發(fā)展,成為UNIX系統的事實(shí)標準。

假定多個(gè)X客戶(hù)端程序及窗口管理器在主機A上,某個(gè)X Server(如下文X.Org Server)運行在主機B上,程序運行過(guò)程可簡(jiǎn)化如下過(guò)程。

  1. 某個(gè)X客戶(hù)端進(jìn)程啟動(dòng),向主機B發(fā)送連接請求,目標地址可通過(guò)命令行或配置文件指定,如果給定的地址已有X Server正在監聽(tīng)端口,則進(jìn)行下一步;
  2. 主機B上的X Server返回一個(gè)連接正確響應,X Server也可以配置接受或拒絕某些地址的請求;
  3. X客戶(hù)端向X Server發(fā)送渲染請求及窗口界面數據;
  4. X Server一方面將窗口界面數據交給顯示驅動(dòng)計算渲染緩沖,另一方面綜合各個(gè)X客戶(hù)端的渲染請求,計算更新區域,但它并不知道如何將多個(gè)窗口“合成到一起”,于是將更新區域事件發(fā)給窗口管理器;
  5. 窗口管理器了解到需要在屏幕上重新合成一塊區域,再向X Server發(fā)送整個(gè)屏幕的繪制請求和數據;
  6. X Server將繪圖數據交給顯示驅動(dòng)計算所有渲染緩沖,并最終繪制圖形;
  7. 運行過(guò)程中,X Server可能收到主機B上的鼠標、鍵盤(pán)事件,經(jīng)計算后,X Server決定發(fā)給哪個(gè)X客戶(hù)端(即獲得焦點(diǎn));
  8. X客戶(hù)端收到鼠標、鍵盤(pán)事件后,回調事件處理,并計算界面該如何更新;
  9. 循環(huán)第3~8,直至X客戶(hù)端收到關(guān)閉事件,進(jìn)程終止、連接斷開(kāi)。

X繪圖過(guò)程示意
以上過(guò)程,主機A和B的CPU架構、操作系統可能都不相同,若A和B是同一個(gè)主機,就相當于在本地繪圖、顯示了。

XFree86和X.Org等實(shí)現

X11只是規范,并不是代碼實(shí)現。MIT另外只給了工具包和參考實(shí)現,參考實(shí)現的意思是不考慮性能只演示工作原理。

1992年,XFree86項目順利開(kāi)展,作為X Window System的一個(gè)早期開(kāi)源實(shí)現,兼容IBM PC機(XFree86中86的含義),得到廣泛應用,項目地址http://www.xfree86.org。至2004年,由于項目?jì)炔繝幷摵驮S可證分歧,XFree86從GPL協(xié)議改為XFree86 License發(fā)布,項目從開(kāi)放走向封閉。

2004年,X.Org基金會(huì )成立,開(kāi)始領(lǐng)導X項目,不僅推動(dòng)X(jué)規范本身發(fā)展,還在XFree86 4.4 RC2版基礎上開(kāi)發(fā)了X規范的另一個(gè)實(shí)現——X.Org Server,原來(lái)XFree86上很多開(kāi)發(fā)者也轉向了X.Org Server,由于更加開(kāi)放而被多數GNU/Linux發(fā)行版使用,項目官網(wǎng)https://www.x.org,源代碼庫地址 http://cgit.freedesktop.org/xorg/xserver,2019年發(fā)布的穩定版為1.20.5。

  • 在X Client方面,X.Org Server實(shí)現了2個(gè)開(kāi)發(fā)庫,XlibXCB,便于開(kāi)發(fā)者編寫(xiě)X應用程序。
  • 在X Server方面,X.Org Server實(shí)現了“X Window System”核心規范及多個(gè)擴展組件。
  • 在Window Manager方面,X.Org Server繼承XFree86項目的twm。
  • 其他,實(shí)現了一個(gè)X Display Manager(X顯示管理器)——xdm。通常透過(guò)字符終端登錄Linux主機時(shí),用戶(hù)僅能獲得字符環(huán)境,而X顯示管理器實(shí)現XDMCP規范(X Display Manager Control Protocol),為多用戶(hù)提供圖形登錄、會(huì )話(huà)管理服務(wù),允許用戶(hù)登錄時(shí)自主選擇使用哪個(gè)Window Manager等。

除上X Server,X11系統客戶(hù)端、窗口管理器也有著(zhù)很多種實(shí)現。

  • 客戶(hù)端。Xlib及其替代者XCB開(kāi)發(fā)庫過(guò)于靠近底層,于是就出現了進(jìn)一步封裝、抽象級別更高的GUI庫,如QT、GTK等,比方說(shuō)前者提供繪制點(diǎn)線(xiàn)面的方法,后者提供繪制按鈕、滾動(dòng)條、下拉菜單等控件的方法,更高層次的抽象對于簡(jiǎn)化開(kāi)發(fā)工作的重要性不言而喻。在眾多X客戶(hù)端程序中,有一個(gè)比較著(zhù)名——xterm,它是基于X的終端模擬器,兼容VT102,也是X研發(fā)初期所計劃的少數客戶(hù)端程序之一。GNU/Linux發(fā)行版中設備/dev/tty1~tty6對應著(zhù)6個(gè)全屏純字符的終端模擬器,通過(guò)Ctrl-Alt-F1~F6切換,顯示能力有限;如果運行到圖形環(huán)境(通過(guò)Ctrl-Alt-F7切換),一般都集成了xterm,可配置的特性十分豐富,其他的諸如Gnome Terminal、Konsole、xfce-term等終端模擬器,或基于xterm,或參考xterm,增加了更多高級功能,如tab標簽頁(yè)、圖片顯示等。
  • 窗口管理器。常見(jiàn)如Metacity、Mutter、KWin、 vtwm、Xfwm、Compiz等,功能、風(fēng)格各異,有的注重簡(jiǎn)潔高效,有的注重外觀(guān)酷炫。
  • 服務(wù)器。X.Org Server占絕對統治地位,但也有其他衍生變種或移植,如XQuartz以及Cygwin/X、Xming、WeirdX,它們所支持的系統平臺、底層庫也都不一樣。

需注意的是,X Window System誕生比Linux早,也不是UNIX或Linux內核的一部分,而是用戶(hù)態(tài)的軟件組件,用戶(hù)在系統上可以選擇啟用或禁用X。

桌面環(huán)境

X Window System各個(gè)部分都有著(zhù)多種實(shí)現,X規范本身特別偏底層,加之GNU/Linux自由開(kāi)放的特點(diǎn),有不少項目在X規范基礎之上進(jìn)一步封裝,并把上述各組件、圖標、主題、及其他特色組件打包在一起,形成開(kāi)箱即用的桌面環(huán)境(Desktop Environment),常見(jiàn)如Gnome、KDE、Unity、XFCE、LXDE等,不一一列舉,每種桌面環(huán)境都有不少用戶(hù)群體,所支持的系統平臺、底層庫也各不一樣。

另值得一提的是,中國武漢深之度科技公司基于Debian(早先基于Ubuntu)打造的GNU/Linux發(fā)行版Deepin,擁有自己的桌面環(huán)境DDE,即Deepin Desktop Environment,Deepin系統在DistroWatch上排名比較靠前,DDE也同時(shí)支持其他GNU/Linux發(fā)行版。

Deepin桌面環(huán)境 圖源:Deepin官網(wǎng)

應用場(chǎng)景

X11規范的模塊化設計,最大的好處是X Client和X Server相互獨立,并不需要了解彼此所處的硬件、軟件環(huán)境。常見(jiàn)的X應用程序諸如xterm、輸入法、Web瀏覽器、Office套件等等,部署在一臺Linux主機上,如果這個(gè)主機也同時(shí)部署了X Server,那么運行這些X應用程序毫無(wú)障礙,這是作為桌面計算機的常見(jiàn)應用場(chǎng)景。

另一種應用場(chǎng)景,Linux主機通常作為服務(wù)器使用,未配備比較好的圖形顯卡等硬件,也沒(méi)有必要部署X Server,從終端登錄到Linux主機也僅有字符界面,那X應用程序該如何運行呢?可以在圖形顯卡等硬件設備比較好的Windows/Mac主機上部署X Server,保持與Linux主機網(wǎng)絡(luò )連通,在Linux主機上寫(xiě)好配置文件,配置好X Server地址和X11請求轉發(fā)(X11 Forwarding),從任意一個(gè)終端登錄到Linux主機并啟動(dòng)X(jué)客戶(hù)端應用程序,就可以使程序的圖形界面顯示在Windows/Mac主機上,并與用戶(hù)交互。事實(shí)上,在1990年代初期,就有這樣的硬件設備,稱(chēng)為“X終端機(X terminal)”,專(zhuān)門(mén)部署X Server,將遠端UNIX主機上的圖形界面程序顯示出來(lái),這也正是MIT研發(fā)X的初衷之一。

X 終端機 圖源:維基百科

從場(chǎng)景描述看出,與常規Client/Server所不同的是,通常X Server部署在本地用戶(hù)主機上,監聽(tīng)、調控本地用戶(hù)主機的硬件設備,而X Client可能部署在遠端服務(wù)器/嵌入式設備上,也可能在本地。

0x02 X的競爭對手

一方面,X工作在用戶(hù)空間,X客戶(hù)端程序不能直接訪(fǎng)問(wèn)顯示驅動(dòng)、X Server與X客戶(hù)端及窗口管理器之間繁瑣的通信流程,拉低了繪圖效率;另一方面,通過(guò)擴展、補丁手段允許在本地直接訪(fǎng)問(wèn)顯示驅動(dòng),又造成穩定性問(wèn)題??傊?,X的設計隨著(zhù)新技術(shù)發(fā)展而顯得臃腫、過(guò)度復雜,背負了沉重的歷史包袱。

Wayland

2008年,紅帽公司(RedHat)的開(kāi)發(fā)者Kristian H?gsberg利用業(yè)余時(shí)間搞起了Wayland項目,2010年Wayland加入了Freedesktop.org項目,項目官網(wǎng)為https://wayland.freedesktop.org,代碼開(kāi)源地址https://cgit.freedesktop.org/wayland/wayland。

Wayland是一個(gè)新的圖形窗口系統方案,一套旨在取代X的新規范。與X最大的不同是,Wayland將X中的Server和窗口管理器整合到一起作為服務(wù)端,稱(chēng)為合成器(Compositor),架構上只分了客戶(hù)端和合成器兩大部件,有沒(méi)有覺(jué)得終于看著(zhù)舒服了一些。

  • 客戶(hù)端(Wayland Client),直接計算各自界面的渲染緩沖數據,客戶(hù)端程序需要和渲染庫(如OpenGL)鏈接。
  • 合成器(Wayland Compositor),匯總所有客戶(hù)端的渲染數據,實(shí)現各界面窗口“合成”,最后交給顯示驅動(dòng)繪圖。
    Wayland項目提供了兩套底層庫libwayland-server和libwayland-client,簡(jiǎn)化圖形程序開(kāi)發(fā),還給了一個(gè)Compositor參考實(shí)現——Weston。

假定多個(gè)Wayland客戶(hù)端程序在主機A上,某個(gè)Wayland Compositor(如Weston)運行在主機B上。

  1. 某個(gè)客戶(hù)端進(jìn)程啟動(dòng),向主機B發(fā)送連接請求,目標地址可通過(guò)命令行或配置文件指定,如果給定的地址已有Compositor正在監聽(tīng)端口,則進(jìn)行下一步;
  2. 主機B上的Compositor返回一個(gè)連接正確響應,Compositor也可以配置接受或拒絕某些地址的請求;
  3. 客戶(hù)端自行生成UI界面和渲染緩沖,不需要向Compositor發(fā)送繪制請求,但需要發(fā)送更新區域事件,告知渲染緩沖中更新了哪些內容;
  4. Compositor綜合各客戶(hù)端的區域更新事件,重新合成整個(gè)屏幕,并交給顯示驅動(dòng)繪制圖形;
  5. 運行過(guò)程中,Compositor可能收到主機B上的鼠標、鍵盤(pán)事件,經(jīng)計算后,Compositor決定發(fā)給哪個(gè)客戶(hù)端(即獲得焦點(diǎn));
  6. 客戶(hù)端收到鼠標、鍵盤(pán)事件后,回調事件處理;
  7. 循環(huán)第3~6,直至客戶(hù)端收到關(guān)閉事件,進(jìn)程終止、連接斷開(kāi)。

Wayland繪圖過(guò)程示意
Wayland適用于桌面設備,也適用于移動(dòng)設備,原來(lái)基于X的GUI庫、桌面環(huán)境很快適配了對Wayland的支持,如Qt、Gnome、KDE、Compiz等,Ubuntu更是早在2010年就將Unity切換到適配Wayland。Wayland依賴(lài)了較多Linux內核技術(shù),不易移植到其他系統平臺。

XWayland

Wayland開(kāi)發(fā)者在X.Org Server基礎上打上系列補丁,稱(chēng)為XWayland,目的是在Wayland規范之上搞成新的X Server,在Wayland環(huán)境中運行X客戶(hù)端程序時(shí),Wayland合成器(如Weston)調用XWayland進(jìn)行服務(wù),以便在過(guò)渡到Wayland過(guò)程中保持對X的兼容性。

Mir

2013年,Ubuntu背后的開(kāi)發(fā)商Canonical公司搞出來(lái)Mir項目,計劃用Mir取代X并兼容X客戶(hù)端程序,并且同時(shí)支持桌面設備和移動(dòng)設備,統一用戶(hù)體驗。這種搞分裂的行為招致了批評,萬(wàn)萬(wàn)沒(méi)想到的是,2017年Canonical公司又放棄了Mir項目并加大對Wayland的支持。

其他

  • 蘋(píng)果公司在MacOS和iOS中,使用Quartz作為自己的圖形窗口系統。
  • Android系統上,使用SurfaceFlinger作為自己的圖形窗口系統。
  • 歷史上還有一些激進(jìn)的方案,逐漸被淘汰。

0x03 總結

盡管有這樣那樣的問(wèn)題,X仍然是GNU/Linux、UNIX上的主力,Wayland作為強有力的競爭對手,在遠程桌面方面亦存在問(wèn)題,重度依賴(lài)Linux內核技術(shù)不易移植到其他系統平臺。在微軟的WSL崛起之時(shí),X的優(yōu)勢倒可以盡情發(fā)揮出來(lái)。
敬請期待下一篇,在Windows上折騰X。

參考

本站僅提供存儲服務(wù),所有內容均由用戶(hù)發(fā)布,如發(fā)現有害或侵權內容,請點(diǎn)擊舉報。
打開(kāi)APP,閱讀全文并永久保存 查看更多類(lèi)似文章
猜你喜歡
類(lèi)似文章
Linux DRM (一) Display Server · Rockchip
X 隨筆
Linux圖形子系統分析
Wayland與Weston簡(jiǎn)介
WSLg Architecture | Windows Command Line
什么是X Windows系統
更多類(lèi)似文章 >>
生活服務(wù)
分享 收藏 導長(cháng)圖 關(guān)注 下載文章
綁定賬號成功
后續可登錄賬號暢享VIP特權!
如果VIP功能使用有故障,
可點(diǎn)擊這里聯(lián)系客服!

聯(lián)系客服

欧美性猛交XXXX免费看蜜桃,成人网18免费韩国,亚洲国产成人精品区综合,欧美日韩一区二区三区高清不卡,亚洲综合一区二区精品久久