Linux黑話解釋:Xorg,X11,Wayland,什么是顯示服務器
您是否想知道X Server,Xorg,X11,Wayland以及諸如此類的東西到底是什么?Wayland vs Xorg,哪個更好?本指南就為你詳細講解。
您總是會遇到這些術語,并且知道它們與圖形有關,但您可能想更深入了解它們,那就繼續(xù)閱讀本文吧。
Linux中的顯示服務器是什么?
顯示服務器是一個程序,其主要任務是協(xié)調(diào)客戶端與其他操作系統(tǒng),硬件以及彼此之間的輸入和輸出。顯示服務器通過顯示服務器協(xié)議與其客戶端進行通信。
顯示服務器是任何圖形用戶界面(尤其是窗口系統(tǒng))中的關鍵組件。它是圖形用戶界面(GUI)的基本組件,位于圖形界面和內(nèi)核之間。因此,借助顯示服務器,您可以將計算機與GUI一起使用。沒有它,您將只能使用命令行界面。
不要將顯示服務器與桌面環(huán)境混淆是非常重要的。桌面環(huán)境(Gnome、KDE、Xfce、MATE等)使用了底層的顯示服務器。
比如:Ubuntu 21.04現(xiàn)在默認啟用Wayland https://www.linuxmi.com/ubuntu-21-04-linux-5-10-lts-wayland.html
顯示服務器通過顯示服務器協(xié)議與其客戶端進行通信。Linux中提供了三種顯示服務器協(xié)議。X11和Wayland是其中兩個。第三個Mir超出了本文的范圍。
X Window System, X.Org, X11介紹
X Window System(通常僅稱為X或X11)確實很古老。它最初起源于1984年,最終成為大多數(shù)類似UNIX的操作系統(tǒng)(包括Linux)的默認窗口系統(tǒng)。
X.Org服務器是X.Org基金會管理的X Window System顯示服務器的免費開放源代碼實現(xiàn)。它是一個通過X11協(xié)議與客戶端應用程序進行交互的應用程序,用于在顯示器上繪制內(nèi)容并發(fā)送輸入事件,例如鼠標移動,單擊和擊鍵。通常,將啟動一個X服務器,它將等待客戶端應用程序連接到它。Xorg基于客戶端/服務器模型,因此允許客戶端在另一臺計算機上本地或遠程運行。
在X11的設計中,應用程序和顯示器不必在同一臺計算機上,這一點并不明顯。在開發(fā)X時,X server運行在工作站上,而用戶在具有更強處理能力的遠程計算機上運行應用程序是很常見的。
X11 是網(wǎng)絡協(xié)議。它描述了如何在客戶端(應用程序)和顯示器(服務器)之間交換消息。這些消息通常帶有原始的繪制命令,例如“繪制框”,“在此位置寫這些字符”,“已單擊鼠標左鍵”等。
但是X11已經(jīng)很古老了,X server協(xié)議提供的大部分功能不再使用。X11所做的幾乎所有工作都重新分配給了各個應用程序和窗口管理器。然而,所有這些舊特性仍然存在,給所有這些應用程序帶來了壓力,損害了性能和安全性。
下一代顯示服務器Wayland
Wayland 由X.Org開發(fā)人員Kristian Hogsberg于2008年作為個人項目開始。它是一種通信協(xié)議 ,用于指定顯示服務器與其客戶端之間的通信。Wayland是作為一個免費的開源社區(qū)驅(qū)動的項目而開發(fā)的,目的是用現(xiàn)代,安全和簡單的窗口系統(tǒng)代替X Window System(也稱為X11或Xorg)。
在Wayland中,合成器是顯示服務器。Compositor是一個窗口管理器,它為應用程序提供每個窗口的屏幕外緩沖區(qū)。窗口管理器將窗口緩沖區(qū)合成為代表屏幕的圖像,并將結果寫入顯示內(nèi)存。
Wayland協(xié)議允許合成器將輸入事件直接發(fā)送到客戶端,并讓客戶端將損壞事件直接發(fā)送到合成器。
與X情況一樣,客戶端在接收到事件時會作為響應更新用戶界面(UI)。但是,在Wayland中,渲染發(fā)生在客戶端中,并且客戶端只是向合成器發(fā)送請求以指示已更新的區(qū)域。
Wayland與X相比的主要優(yōu)勢在于它是從頭開始的。X的復雜性的主要原因之一是,多年來,它的作用已經(jīng)改變。結果,今天,X11很大程度上充當了客戶端和窗口管理器之間的“一個非常糟糕的”通信協(xié)議。
Wayland在安全性方面也很出色。使用X11,可以通過允許任何程序在后臺存在并讀取X11區(qū)域中打開的其他窗口所發(fā)生的事情來執(zhí)行稱為“鍵盤記錄”的操作。使用Wayland,這根本不會發(fā)生,因為每個程序都是獨立工作的。
總結
但是,與Wayland相比,X Window System仍具有許多優(yōu)勢。即使Wayland消除了Xorg的大多數(shù)設計缺陷,它也有其自身的問題。即使Wayland項目已經(jīng)進行了十多年,事情還是不是100%穩(wěn)定的。截至2020年,大多數(shù)用于Linux的視頻游戲和圖形密集型應用程序仍為X11編寫。另外,許多封閉源代碼的圖形驅(qū)動程序,例如NVIDIA GPU的驅(qū)動程序,都尚未完全提供對Wayland的支持。
X不能持久,Wayland在許多方面都可以改善。但是到目前為止,現(xiàn)有的絕大多數(shù)本機應用程序都是為Xorg編寫的。在移植所有這些應用程序之前,需要維護Xorg。與Xorg相比,Wayland還不是很穩(wěn)定。