【问题标题】:What is the tty subsystem for?tty 子系统有什么用?
【发布时间】:2016-09-21 16:29:45
【问题描述】:

到目前为止,我已经花了至少 10 个小时试图理解 Linus Akesson 的著名博客文章,但我仍在苦苦挣扎。所以让我用一系列简短的问题来问我对 tty/ptty 的疑问。

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

2) tty/ptty 与设备或驱动程序或一些编号或什么的连接是什么?

3) tty 似乎与进程的控制终端相关联,这是什么关系?每个进程都与终端相关吗?

4) 总的来说,我仍然不明白这个终端概念到底适用于何处。一个进程想要从 stdio 读取一些东西,不能简单地从所需的设备文件中读取。 tty 到底打算解决什么问题?

5) 我在某处读到有人尝试将 tty 从用户空间移动到内核空间。 tty 仅仅是一个历史遗留物,而不是一个强大的设计功能。??

【问题讨论】:

    标签: linux linux-kernel operating-system tty


    【解决方案1】:

    澄清(可能会回答您的一些问题): 我认为您的意思是 pty(而不是 ptty),它是伪 tty/伪终端。

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

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

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

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

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

    编辑2: 你已经改变了问题,所以现在看来​​我说的好像断章取义...... 无论如何,即使在今天,tty 也有许多不同的角色。终端驱动程序是用户内核可以“通信”的方式。有一些技术,例如终端驱动程序、字符设备等。

    如果您仍有问题,请发表评论,不要更改整个帖子......

    【讨论】:

    • 不,我只是添加了一个额外的标签。我根本没有编辑问题。
    • 哦,对不起,我可能错过了,对不起
    • 这是您要找的吗?还是我错过了什么?
    • @I-V,pty 与 ptty 有何不同?另外,什么是“行式打印机”?
    • @I-V, 软件开发者可以访问“终端驱动程序”吗?
    猜你喜欢
    • 1970-01-01
    • 2015-05-24
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多