进一步阅读

进一步阅读
root 717  2.0  3.2 1038344 263604 tty7   Rsl+ /usr/lib/xorg/Xorg -core :0 -seat seat0 -auth /var/run/lightdm/root/:0 -nolisten tcp vt7 -novtswitch

X 服务器进程正在运行名为 的程序是否正确Xorg? (所以我可以确信我已经找到了X服务器进程。)

它是一个服务器,为什么它还有一个控制终端(tty7)?为什么它不能放弃控制终端而成为守护进程呢?

谢谢。

答案1

X11服务器不需要任何旧的终端设备。它具体来说需要一个内核虚拟终端设备。

这是因为它没有使用通用终端 I/O 终端。它使用终端作为它与内置于内核中的终端仿真器程序之间协商共享 I/O 设备的方式。使用特定于内核虚拟终端设备的协议,该协议涉及ioctl()只有该类型的设备可以理解并向进程发送信号,它可以协商何时负责显示和人类输入设备(HID)以及何时内核内置终端仿真程序是。

(在 Linux 上,这是 KVT 的主要用途,I/O 完全通过其他设备路由,并且它作为控制终端几乎但不完全是 X11 服务器在没有控制终端的会话 在 BSD 上,事情更加复杂,因为 KVT 设备是这样的。一种访问帧缓冲区和 HID 输入的方法,尽管不如访问底层 USB HID(如果它们是 USB)好。然而,在 FreeBSD 上至少首先Xorg不会以 KVT 作为其控制终端,因为在 FreeBSD 上只需打开一个终端设备绝不自动使其成为控制终端,这个问题没有实际意义,因为该Xorg过程实际上才不是有正常运行的控制终端。)

如果内核的内置终端仿真器没有使用特定的显示设备或 HID,可以通过一些努力来安排(以远远超出本答案范围的方式),那么设备共享是不必要的,X11 服务器可以始终“拥有”设备。另外,如果内核已经构建好了没有内置的终端仿真器,没有什么可协商的。类似地,如果 X11 服务器实际上并不首先使用任何 I/O 设备(就像程序的情况一样Xvnc),则不需要协商 I/O 设备所有权的机制。

进一步阅读

相关内容