Xorg 是如何工作的?

Xorg 是如何工作的?

我正在尝试了解 Xorg 的工作原理。

我创建了下图来展示我的理解(该图显示了按 Ctrl+Alt+F7 后组件的状态):

在此输入图像描述

下面是图片的解释:

  • /dev/tty7是 Xorg 的控制终端。
  • Xorg 直接与 VGA 驱动程序对话以在屏幕上绘制(它不会将想要绘制的内容发送给 TTY 驱动程序)。
  • Xorg 直接接收来自键盘和鼠标驱动程序的输入(它不接收来自 TTY 驱动程序的键盘和鼠标输入)。
  • 虚拟终端还接收来自键盘驱动程序的输入(但根据我的测试,它接收按键的扫描码)。
  • X 客户端(图中的 xterm 和 Firefox)没有控制终端。

我的理解正确吗?

答案1

您的描述与您的图表不太相符,并且比您的图表更正确。

X 服务器不使用 tty 驱动程序进行输入或输出。它直接从各种输入设备的驱动程序读取输入,并将输出直接发送到显卡驱动程序。

您可以使用 列出输入设备xinput,然后使用 获取更多信息xinput list-props。例如:

$ xinput | tail -n 1
    ↳   USB Keyboard                            id=10   [slave  keyboard (3)]
$ xinput list-props 10 | tail -n 1
        Device Node (263):      "/dev/input/event2"

您可以看到我的 X 服务器通过读取从我的 USB 键盘获取输入/dev/input/event2

对于输出,我不知道是否有类似的用户级工具。xrandr --listproviders列出正在使用或可用的图形驱动程序,但不列出/dev条目。您可以使用lsof -p$(pgrep Xorg)或来查看 X 服务器打开了哪个图形设备less /var/log/Xorg.0.log

控制终端的概念是为文本模式会话而设计的。 X 服务器可能有也可能没有控制终端,具体取决于它的启动方式。从 GUI 菜单启动的 X 程序通常没有控制终端,因为窗口管理器没有控制终端。从在终端中运行的 shell 启动的 X 程序确实将该终端作为控制终端。

相关内容