Answers:
外壳使用TTY设备(如果已连接到其中)来获取用户输入并产生输出,仅此而已。外壳连接到TTY的事实由getty
(并由保留login
)确定;大多数情况下,shell不在乎是否连接到TTY。它与内核的交互是通过系统调用进行的。
X11服务器不知道登录信息(就像外壳一样)。X11中的登录过程以两种方式工作:
startx
);与Shell相比,X11服务器获取输入和产生输出的方式非常不同。在输入方面,X从鼠标开始了解外壳没有的设备。它通常使用自己的驱动程序直接管理这些驱动程序。即使对于键盘,X都有自己的驱动程序,可以补充内核的处理(据我所知,例如,在Linux上,X使用TTY驱动程序从键盘读取原始输入,然后使用其自己的驱动程序来解释该输入)。在输出方面,无论有无内核帮助,X都直接驱动显示设备,而无需通过TTY设备。
但是,许多系统上的X11服务器确实使用TTY设备来与内核同步:在支持虚拟终端的系统上,X需要“保留”正在运行的VT,并处理VT切换。沿途还有其他一些细微之处。因此,在Linux上,X调整了TTY以禁用GPM(允许以文本模式使用鼠标的程序)。X也可以共享VT ...
过去在某些工作站上,与内核之间没有太多显式的同步。如果您没有运行xconsole
,最终可能会在X11显示屏顶部以“文本模式”显示内核消息。