Linux黑話解釋:什么是顯示服務(wù)器,用來做什么?
在 Linux 相關(guān)的文章、新聞和討論中,你會(huì)經(jīng)常遇到顯示服務(wù)器、Xorg、Wayland 等名詞。
在這篇解釋文章中,我將討論 Linux 中的顯示服務(wù)器。
什么是顯示服務(wù)器?
顯示服務(wù)器是一個(gè)程序,它負(fù)責(zé)協(xié)調(diào)其客戶端與操作系統(tǒng)的其他部分之間,以及硬件和操作系統(tǒng)之間的輸入和輸出?;旧?,多虧了顯示服務(wù)器,你才能以圖形化的方式使用你的計(jì)算機(jī)(GUI)。如果沒有顯示服務(wù)器,你只能局限于命令行界面(TTY)。
顯示服務(wù)器提供了一個(gè)圖形環(huán)境的框架,使你可以使用鼠標(biāo)和鍵盤與應(yīng)用程序進(jìn)行交互。
顯示服務(wù)器通過顯示服務(wù)器協(xié)議(如 X11)與客戶端進(jìn)行通信。顯示服務(wù)器是圖形用戶界面 —— 特別是窗口系統(tǒng) —— 中的一個(gè)關(guān)鍵組件。
不要把顯示服務(wù)器和桌面環(huán)境混淆。桌面環(huán)境的下層使用的是顯示服務(wù)器。
聽起來很熟悉,但又不完全清楚?讓我來解釋一下。
Linux 上的顯示服務(wù)器協(xié)議
Linux 中有三種顯示服務(wù)器協(xié)議,分別是 X11、Wayland 和 Mir。下面我就給大家簡(jiǎn)單介紹一下這些顯示服務(wù)器。
X11
X11(也稱 X)是已經(jīng)存在多年的傳統(tǒng)顯示服務(wù)器。它是 Linux 發(fā)行版中最常用的顯示服務(wù)器。
X 架構(gòu)
X11 通信協(xié)議,使用顯示服務(wù)器 X.org 服務(wù)器。它接收來自設(shè)備驅(qū)動(dòng)程序的輸入事件,并將它們提供給它的一個(gè)客戶端。
顯示服務(wù)器也從客戶端接收數(shù)據(jù),它處理數(shù)據(jù)并進(jìn)行合成,在 Linux 上,它將數(shù)據(jù)傳遞給三個(gè)內(nèi)核組件之一:DRM、gem 或 KMS 驅(qū)動(dòng)。
X.Org 服務(wù)器是一個(gè)顯示服務(wù)器,它依靠第二個(gè)程序:合成窗口管理器,來進(jìn)行合成。例如 Mutter 或 KWin。GNOME 使用的是 Mutter。
Wayland
按照其網(wǎng)站的說法,Wayland “旨在作為 X 的更簡(jiǎn)單的替代品,更容易開發(fā)和維護(hù)”。
而事實(shí)上 Wayland 就是現(xiàn)代的顯示服務(wù)器,它應(yīng)該取代傳統(tǒng)的 X 顯示服務(wù)器。
對(duì)它的采用還在普及中。Ubuntu 曾試圖在 17.10 版本中改用 Wayland 作為默認(rèn)的顯示服務(wù)器,但這個(gè)嘗試遭到了負(fù)面反饋。
很多 GUI 應(yīng)用程序及其框架都依賴于 X 服務(wù)器。這些應(yīng)用程序在 Wayland 上無法正常工作。
這迫使 Ubuntu 繼續(xù)使用 X 作為默認(rèn)顯示服務(wù)器。它仍然提供了使用 Wayland 的選項(xiàng),但不再是默認(rèn)的了。
即使在今天,絕大多數(shù)的發(fā)行版都默認(rèn)使用 X 顯示服務(wù)器。
Wayland 架構(gòu)
實(shí)施 Wayland 顯示服務(wù)器協(xié)議的顯示服務(wù)器,被稱為 Wayland 合成器。和 X11 上的一樣,Wayland 合成器負(fù)責(zé)處理其客戶端的輸入和輸出,但同時(shí)也進(jìn)行合成,這與 X11 相反。
幾個(gè) Wayland 合成器是 Weston、Mutter、KWin 或 Enlightenment。
Mir
Mir 顯示服務(wù)器自帶的 Mir 顯示服務(wù)器協(xié)議,與 X11 和 Wayland 使用的協(xié)議不同。它是由 Canonical 開發(fā)的,作為 Unity 開發(fā)的一部分,打算成為 Ubuntu 的首選顯示服務(wù)器。
但在 2017 年,它已經(jīng)被 [Ubuntu] 桌面版的 Wayland 顯示服務(wù)器所取代,不過 Mir 的開發(fā)還在繼續(xù),用于物聯(lián)網(wǎng)(IoT)應(yīng)用。
為什么我們還在使用 Xorg?
Wayland 作為比較新的產(chǎn)品,相比 Xorg 來說,還不是很穩(wěn)定。作為客戶端的程序,必須知道如何與顯示服務(wù)器進(jìn)行通信。
因此,很多程序在使用 Wayland 時(shí)可能無法運(yùn)行。Ubuntu 默認(rèn)切換到 Wayland 的實(shí)驗(yàn)證實(shí)了這一點(diǎn)。
結(jié)束語
我希望你對(duì) Linux 中的顯示服務(wù)器概念有了更好的理解。我已經(jīng)盡量不談太多的技術(shù)細(xì)節(jié),但我無法完全避免。