tty子系统是用来做什么的?

4

我现在已经花费至少10个小时来理解Linus Akesson的著名博客文章,但我仍然感到困惑。所以让我用一系列简短的问题来问一下关于tty/ptty的疑问。

1) tty/ptty在用户空间还是内核空间中?

2) tty/ptty与设备、驱动程序或某些编号有何关联?

3) tty似乎与进程的控制终端相关联,两者之间的关系是什么,每个进程是否都与终端相关联?

4) 总的来说,我仍然不明白这个终端概念到底是什么。一个进程想要从stdio中读取某些内容,难道不能直接从所需的设备文件中读取吗?tty究竟是要解决什么问题?

5) 我在某处读到有人试图将tty从用户空间移动到内核空间。那么,tty只是历史遗留问题而不是强大的设计特性吗?

1个回答

6

澄清一下(可能会回答你的其中一些问题): 我想您是指虚拟终端(pty,而不是ptty)。

  1. tty (/dev/ttyx) - 代表电传打字机 - 是原始终端(使用行打印机输出和键盘输入!)。 终端基本上只是一个使用文本进行输入和输出的用户界面设备。

  2. pty (/dev/pty/n)是伪终端 - 它是一种软件实现,对于连接的程序来说它看起来像一个终端,但是它不是直接与“真实”终端通信,而是将输入和输出传输到另一个程序。 它是telnet / SSH甚至GNOME终端的终点。

例如,当您ssh进入远程计算机并运行ls时,ls输出被发送到伪终端,其另一侧连接到SSH守护程序。

编辑: 据我所知,tty和pty都是用户模式。但是它们代表终端驱动程序。我的意思是:设备文件/dev/tty1是第一个虚拟控制台。大多数代码位于drivers / char中,在tty_io.c和n_tty.c和vt.c文件中(内核源代码)。 与字符设备不同,为了打开这些文件,需要调用tty_open例程,相信我,它比打开字符设备要麻烦得多...

Tty / pty代表上述终端驱动程序,但它们代表串行端口(您所说的“编号”)。 我对此知之甚少,因此不想说出不正确的数据...但您可以在网上搜索(或其他人可以从这里继续)

编辑2: 您已更改了问题,因此现在似乎我离题了... 无论如何,tty即使在今天也有许多不同的角色。 终端驱动程序是用户内核“通信”的方式。 有一些技术,例如终端驱动程序,字符设备等。

如果您仍有疑问,请评论并不要更改整个帖子....


1
不,我只是添加了一个额外的标签。我没有编辑问题。 - user2277550
哦,那我可能错过了,抱歉。 - I-V
@I-V,pty和ptty有什么区别?还有,“line printer”是什么? - Pacerier
@I-V,软件开发者是否可以访问“终端驱动程序”? - Pacerier
@I-V,Mac中的/dev/ttyx等价于什么? - Pacerier
显示剩余2条评论

网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接