Linux TTY 操作顺序

问题描述 投票:0回答:1

在《UNIX环境下的高级编程》中,图18.2则用户进程和实际设备之间的顺序如下(从设备到用户进程):

1-实际设备

2- tty 设备驱动程序

3- tty 线路规则

4-内核读、写系统调用

5-用户进程

在另一个链接,https://www.linusakesson.net/programming/tty/,我看到了另一个序列如下:

1-实际设备

2-设备驱动程序

3- tty 线路纪律

4-tty 驱动程序

5-用户进程

我的问题是,上面链接中的第四步(tty 驱动程序)与系统调用相同吗?或者可以进一步解释以避免一些歧义吗?

谢谢你

linux system-calls device-driver tty read-write
1个回答
0
投票

Linux 操作系统有两个世界:用户空间,您的进程所在的位置,以及您启动

/bin/sh
/bin/bahs
(或其他)并尝试与某些
/dev/tty*
设备通信的位置。还有内核空间,它实际上是操作系统本身在执行其令人不安的职责。

系统调用是跨越这两者之间边界的唯一方法。当您提交

read
write
系统调用时,您将离开用户空间并要求内核空间代表您执行某些操作。特别是,这意味着内核空间代码将代替您的应用程序运行(您在其中调用
read
write
)。

内核到底会做什么……嗯,这取决于很多因素。例如,与串行设备对话与与硬盘驱动器对话有很大不同,这种差异在于物理层面,在于自然的工作方式。一个理智的内核不敢独自处理所有的事情;它宁愿尝试公开一个定义良好的通用接口,并让细节在编译时或每次运行时插入其中。驱动程序也是这种类型:遵循内核要求,它们确实封装了与某些特定类型的物理设备(例如串行端口)的通信。因此,在某个时刻,内核跳入后,您的

read
write
会将其传递给内核选择的驱动程序,并且该驱动程序实际上应该将信号传播到设备并回复。

希望这是有道理的并澄清您的误解。如果没有,请提出更具体的问题。

© www.soinside.com 2019 - 2024. All rights reserved.