https://unix.stackexchange.com/a/503874/674说
显示器实际上是 X 服务器;每个 X 服务器只有一个显示器。因此多个 X 服务器不能同时在同一台显示器上运行,一个 X 服务器也不能同时在多个显示器上运行。 (严格来说,后一点是不正确的,但我认为不存在可以服务多个显示器的 X 服务器。)
https://www.x.org/archive/X11R6.8.0/doc/X.7.html#sect4说显示器可以有多个屏幕/监视器。
$DISPLAY
指定一个屏幕,而不仅仅是一个显示器,并用于启动 X 服务器或 X 客户端。那么 X 服务器是在显示器还是屏幕上启动的呢?那么 X 服务器是在显示器还是屏幕上启动的呢?https://unix.stackexchange.com/a/503884/674有一个图表
区分屏幕和显示器,同时https://www.x.org/archive/X11R6.8.0/doc/X.7.html#sect4在解释屏幕编号时似乎说它们是相同的概念。哪一个是正确的?
显示 X 服务器覆盖显示器中的所有屏幕。那么显示服务器是在显示器、屏幕还是监视器中启动的呢?
-
xserver 可以使用硬件帧缓冲区、虚拟帧缓冲区 (Xvfb) 或另一个 xserver (Xephyr) 上的窗口。后两个是“虚拟”xserver/display 的示例
帧缓冲区是否与显示器、屏幕或监视器相关联?
抱歉,我仍然对多个概念感到困惑。谢谢。
答案1
那么 X 服务器是在显示器还是屏幕上启动的呢?
我不知道如何用与以前不同的方式来表达这句话;出于所有意图和目的,X 服务器是显示器(“显示器”是 X Window 的概念,我理解这就是我们在这里讨论的内容)。 X 服务器无法启动在一个显示器,它是一个显示器。您可以将其视为“X 服务器启动显示器”,并且“显示器包含一个或多个屏幕”。
该DISPLAY
变量可能会令人困惑,因为正如您所说,它可以指定的不仅仅是 X 显示。
哪一个是正确的?
图表;请参阅下面的解释。
显示服务器是否在显示器、屏幕或监视器中启动?
在 X Window 文档中,“显示服务器”与 X 服务器同义,因此上述内容适用。
考虑到 X Window 文档是很久以前编写的,当时虚拟显示器还没有被使用(很多,如果有的话),并且多显示器设置很复杂并且经常涉及多个 X 屏幕,这可能会有所帮助,有时甚至是多个 X 服务器。所以在 X 文档中,屏幕通常是显示器。然而,很快我们就发现,将多个显示器分割成多个屏幕很烦人,一旦显卡能够将多个显示器作为一个单元处理,使用模式就会发生变化,X 屏幕往往会覆盖多个显示器。
帧缓冲区是否与显示器、屏幕或监视器相关联?
“帧缓冲区”是一个有点模糊的术语,有多种定义。在您引用的评论的上下文中,它与一个屏幕相关联,您可以通过以下方式看到这一点Xvfb
:如果您告诉它为其帧缓冲区使用内存映射文件,并定义多个屏幕,您将看到它使用一个每个屏幕的帧缓冲区文件。
答案2
正如您第 1000 次被告知的那样,显示屏是X 服务器。所以“X 服务器在显示器中运行”是没有意义的。
X 文档使用“显示”来指代一堆硬件,因为在过去,X 服务器通常(如果不是总是)控制并渲染到真实硬件,但现在,许多现代服务器能够在非硬件上运行并渲染到非硬件上。-真实(虚拟)基于硬件的目标,例如Xephyr
或Xvfb
。Xorg with dummy video driver
该文档不会经常更新,但在现代系统上说“显示器是一堆硬件”是不合适的,最好说“显示器是一个正在运行的 X 服务器进程”。
X 服务器侦听某个地址,可以使用 X11 协议连接该地址。 X11协议数据的传输方式纯粹是平台特定的事情,它可以是一对TCP套接字,posix服务器端的TCP套接字和非posix客户端的魔术对象(基本上是任何两个连接的TCP端点) ,一对本地连接的UDS(基本上是任何两个连接的IPC端点,在这种情况下X窗口系统可能会变得更加强大和高效,因为客户端和服务器运行在同一台机器上,像DRI这样的事情成为可能)。
一个 X 服务器可能运行多个 X 屏幕(不要与现实生活中的监视器混淆),并且可能处理多个帧缓冲区(无论真正的 GPU 帧缓冲区或malloc()
缓冲区或mmap()
磁盘文件内存空间区域),帧缓冲区与X 屏幕,取决于您的驱动程序、设置以及您使用的 X 服务器类型。