Linux黑话解释:什么是显示服务器,用来做什么?

系统 Linux
在 Linux 相关的文章、新闻和讨论中,你会经常遇到显示服务器display server、Xorg、Wayland 等名词。在这篇解释文章中,我将讨论 Linux 中的显示服务器。

[[341101]]

在 Linux 相关的文章、新闻和讨论中,你会经常遇到显示服务器display server、Xorg、Wayland 等名词。

在这篇解释文章中,我将讨论 Linux 中的显示服务器。

什么是显示服务器?

显示服务器是一个程序,它负责协调其客户端与操作系统的其他部分之间,以及硬件和操作系统之间的输入和输出。基本上,多亏了显示服务器,你才能以图形化的方式使用你的计算机(GUI)。如果没有显示服务器,你只能局限于命令行界面(TTY)。

显示服务器提供了一个图形环境的框架,使你可以使用鼠标和键盘与应用程序进行交互。

显示服务器通过显示服务器协议(如 X11)与客户端进行通信。显示服务器是图形用户界面 —— 特别是窗口系统 —— 中的一个关键组件。

不要把显示服务器和桌面环境混淆。桌面环境的下层使用的是显示服务器。

听起来很熟悉,但又不完全清楚?让我来解释一下。

Linux 上的显示服务器协议

Linux 中有三种显示服务器协议,分别是 X11、Wayland 和 Mir。下面我就给大家简单介绍一下这些显示服务器。

X11

X11(也称 X)是已经存在多年的传统显示服务器。它是 Linux 发行版中最常用的显示服务器。

 

X 架构

X11 通信协议,使用显示服务器 X.org 服务器。它接收来自设备驱动程序的输入事件,并将它们提供给它的一个客户端。

显示服务器也从客户端接收数据,它处理数据并进行合成,在 Linux 上,它将数据传递给三个内核组件之一:DRMgem 或 KMS 驱动

X.Org 服务器是一个显示服务器,它依靠第二个程序:合成窗口管理器,来进行合成。例如 Mutter 或 KWin。GNOME 使用的是 Mutter。

Wayland

按照其网站的说法,Wayland “旨在作为 X 的更简单的替代品,更容易开发和维护”。

而事实上 Wayland 就是现代的显示服务器,它应该取代传统的 X 显示服务器。

对它的采用还在普及中。Ubuntu 曾试图在 17.10 版本中改用 Wayland 作为默认的显示服务器,但这个尝试遭到了负面反馈。

很多 GUI 应用程序及其框架都依赖于 X 服务器。这些应用程序在 Wayland 上无法正常工作。

这迫使 Ubuntu 继续使用 X 作为默认显示服务器。它仍然提供了使用 Wayland 的选项,但不再是默认的了。

即使在今天,绝大多数的发行版都默认使用 X 显示服务器。

 

Wayland 架构

实施 Wayland 显示服务器协议的显示服务器,被称为 Wayland 合成器。和 X11 上的一样,Wayland 合成器负责处理其客户端的输入和输出,但同时也进行合成,这与 X11 相反。

几个 Wayland 合成器是 WestonMutterKWin 或 Enlightenment

Mir

Mir 显示服务器自带的 Mir 显示服务器协议,与 X11 和 Wayland 使用的协议不同。它是由 Canonical 开发的,作为 Unity 开发的一部分,打算成为 Ubuntu 的首选显示服务器。

但在 2017 年,它已经被 [Ubuntu] 桌面版的 Wayland 显示服务器所取代,不过 Mir 的开发还在继续,用于物联网(IoT)应用。

为什么我们还在使用 Xorg?

Wayland 作为比较新的产品,相比 Xorg 来说,还不是很稳定。作为客户端的程序,必须知道如何与显示服务器进行通信。

因此,很多程序在使用 Wayland 时可能无法运行。Ubuntu 默认切换到 Wayland 的实验证实了这一点。

结束语

我希望你对 Linux 中的显示服务器概念有了更好的理解。我已经尽量不谈太多的技术细节,但我无法完全避免。 

责任编辑:庞桂玉 来源: Linux中国
相关推荐

2020-10-31 17:00:33

Linux显示管理器

2021-03-17 10:45:03

Linux服务器命令

2020-09-16 06:07:17

LinuxUbuntu LTS长期支持

2020-09-04 06:26:22

Linux桌面环境操作系统

2022-01-26 11:04:06

Linux上游upstream下游downstre

2021-12-16 14:25:03

Linux定时任务

2020-09-13 09:19:58

Linux Linux 发行版操作系统

2020-09-22 07:32:56

Linuxstat 命令滚动发行版

2020-09-22 07:33:50

Linux

2021-12-20 14:56:07

LinuxTTY

2020-10-24 17:44:57

LinuxFOSS自由和开源软件

2021-09-23 16:43:48

Linux黑话解释

2022-02-09 10:56:09

ReactJS组件前端

2020-10-13 12:29:38

Linux包管理器

2020-11-10 22:57:32

LinuxGUICLI

2020-11-10 11:29:36

LinuxGUICLI

2022-04-03 13:17:21

Linux黑话解释GRUB

2020-11-04 16:00:22

文件系统

2018-11-16 11:06:25

开源服务器goproxy

2023-11-22 10:51:25

LinuxSuper
点赞
收藏

51CTO技术栈公众号