在著名的“TTY 揭秘”,如下图所示:
由此看来,用户进程正在与“TTY 驱动程序”通信,而“TTY 驱动程序”又与线路规则通信。然而,在奥莱利的书:
看起来用户应用程序正在与“tty 核心”进行通信,而“tty 核心”又与线路规则进行通信,而 tty 驱动程序是硬件之前的最后一层。有人可以解释一下“tty 驱动程序”到底是什么吗?我想尖锐地提出我的问题:
据我所知,驱动程序是用于与硬件通信的软件。例如,有一个设备驱动程序知道如何与磁盘控制器通信。该驱动程序实际上负责读取和写入设备控制器的寄存器。另一方面 - 有些驱动程序不用于与硬件通信,例如文件系统驱动程序,它们基本上是一种知道如何以特定方式组织数据的软件。
tty 驱动程序是哪种类型的驱动程序?生产线纪律适用于哪里?
编辑
经过进一步阅读和观察 O'Reilly 章节,在我看来,O'Reilly 所说的“TTY 驱动程序”实际上就是“The TTY demystified”所说的“UART 驱动程序”,而 O'Reilly 所说的“TTY 驱动程序”实际上是指“UART 驱动程序”。 “TTY 核心”就是“TTY 揭秘”中“TTY 驱动程序”的意思。
意思是,O'Reilly 的“TTY 驱动程序”是用于与硬件交互的设备驱动程序,而“TTY 核心”是用于从用户进程接收数据的内核软件(因此 - 驱动程序(?)),通过线路规则将其发送到正确的驱动程序(让它成为 UART 驱动程序或 pty 主设备)。
那是对的吗?
答案1
tty驱动和线路纪律有什么关系
该过程与学科进行沟通。但纪律可能是raw
(无操作、空纪律),在这种情况下,它除了传递消息之外什么也不做。
这就是为什么 O'Reilly 书中的堆栈有一个直通左边是线路纪律,右边是线路纪律。这是他们解释 no-op/raw/null 行规则的方式(raw
是实际名称,您可以使用 来设置它stty raw
)。