Linux TTY操作序列

bvn4nwqk  于 2023-08-03  发布在  Linux
关注(0)|答案(1)|浏览(83)

在“UNIX环境中的高级编程”中,用户进程和实际设备之间的顺序如下(从设备到用户进程):1-实际器械
2-tty设备驱动程序
3-tty线
4-内核读、写系统调用
5-用户进程
在另一个链接https://www.linusakesson.net/programming/tty/中,我看到另一个序列如下:1-实际器械
2-驱动装置
3-线纪律
4-tty驱动程序
5-用户进程
我的问题是,上面的第四步链接(tty驱动程序)是否与系统调用相同?或者可以多解释一些,避免一些歧义?
谢谢你的好意

vmdwslir

vmdwslir1#

Linux有两个世界:用户空间,您的进程所在的地方,以及您启动/bin/sh/bin/bahs(或其他)并尝试与某个/dev/tty*设备通信的地方。还有内核空间,实际上是操作系统本身在执行它不稳定的任务。
系统调用是跨越这两者之间边界的唯一方法。当您提交readwrite系统调用时,您将离开用户空间并请求内核空间代表您执行某些操作。特别是,这意味着内核空间代码将代替您的应用程序(您在其中调用readwrite)运行。
kernel到底会做什么。。这取决于很多因素。例如,与串行设备交谈与与硬盘驱动器交谈有很大的不同-这种差异存在于物理层面,即自然界的工作方式。一个理智的内核是不敢独自处理每一件事和每一件小事的;它宁愿尝试公开一个定义良好的固定通用接口,并在编译时或每次运行时将细节插入其中。司机也是这样:遵循内核要求,它们不能够与某些特定种类的物理设备(例如,串行端口)进行对话。所以在某个时刻,在内核跳转之后,您的readwrite将把它传递给内核选择的驱动程序,该驱动程序应该实际将信号传播到设备并回复。
我希望这是有意义的,并澄清你的误解。如果没有,请问一个更具体的问题。

相关问题