首页 > 其他分享 >什么是tty、pty、pts

什么是tty、pty、pts

时间:2022-09-02 02:44:06浏览次数:482  
标签:teletype tty 显示器 计算机 writer pty pts

1 tty的原型

teletype writer,早期是这样的一个大型设备,多个teletype writer链接起来可以进行实时通信,左端在纸上打的字右端收到后在纸上打出来。

img

后来做出了可以把字母转码为打孔纸带(二进制码流)的机器:向计算机输入信息时打字在纸上,拿到打孔纸带给计算机读;计算机输出的纸带拿到teletype writer上解码打字到纸上即可。这与我们当前的人机交互方式类似,teletype writer上自带键盘,纸就相当于现在的显示器。

img

早期计算机都是在机房的,而这个teletype writer设备在用户这一测,便称之为终端(terminal)

2 早期计算机输入架构

但操作系统不能只是接上输入设备就完事大吉了,作为人机交互的终端还需要考虑如下三个方面:

  1. 输入校验和流控 UART (Universal Asynchronous Receiver and Transmitter);
  2. 行编辑(写错字回退等功能);
  3. 会话管理:一个终端需要能够控制多个进程

所以人机交互便被设计成这个样子

img

3 桌面输入架构

计算机进入到电子显示器阶段。在早期计算机设备上,电子显示器与计算机的关系就像是现在的机床一样,通过嵌在设备上的电子显示器和按键控制计算机,此时我们便称这个显示器和按钮为——控制台(console),但久而久之,人们惯性的认为显示器就是那个控制台(就像计算机刚刚普及的时候人们都认为显示器就是计算机,给显示器配防尘套,让主机在一旁吃灰)。

UART只能做到打孔纸带级别信息的流控,原先在teletype writer上做的打孔纸带到人类语言的转码也需要集成在计算机中实现,便出现了各类输入输出设备的驱动(driver)负责控制设备与人交互,terminal emulator负责与计算机交互,于是桌面输入架构便成了这个样子。

img

4 远程输入架构

再发展到后来出现了在远程控制计算机的需求,人需要通过软件远程连接到计算机上与操作系统进行交互,与驱动交互的terminal emulator显然不能满足需求,此时便出现了pty(pseudo tty)负责与负责远程连接的进程(如ssh)进行交互。

img

现在的linux是多用户操作系统,会为每个远程连接分配一个pty,放在/dev/pts/目录,也就形成了我们常见的pts(pseudo ttys)

img

远程用户通过用户态进程ssh读写pts字符设备(文件类型是[c])与操作系统通信。

img

上图ssh下的所有进程的stdinstdoutstderr都是当前pts设备/dev/pts/0

5 相关命令

  1. tty:打印当前的tty
  2. who:查看当前有哪些用户已登录到本系统

6 reference

  1. 什么是电传打字机,为什么它们被用于计算机?
  2. The TTY demystified
  3. 硬件终端 terminal(TTY)

标签:teletype,tty,显示器,计算机,writer,pty,pts
From: https://www.cnblogs.com/dongpiaoliang/p/16648424.html

相关文章

  • 小技巧:在VBA中查找SAP GUI Scripts 脚本对象层次结构视图
    SAPGUIScript提供了很多功能,单靠录脚本的方法去发现有点不太灵活,查SAP官方的网页也是一种可行的办法。下面介绍通过VBA直接在本地查看,方便快捷。安装好SAPGUI以后,在......
  • mybatis 的ResultMap和ResultType区别是什么?
     官方文档说明:ResultType:期望从这条语句中返回结果的类全限定名或别名。注意,如果返回的是集合,那应该设置为集合包含的类型,而不是集合本身的类型。resultType和resul......
  • @NotEmpty @NotBlank @NotNull 的区别
    @NotEmpty不能为null,且长度必须大于0,一般用在集合类上或者数组上@NotBlank只能作用在接收的String类型上,注意是只能,不能为null,而且调用trim()后,长度必须大于0,即:......
  • Linux操作系统中修改putty工具的ssh端口号(22)
    Linux服务器为了保证安全,需修改putty远程的默认端口22,具体操作步骤:1.在Linux服务器中登录用户名和密码(用root用户登录);2.输入vim /etc/ssh/sshd_config3.上下箭头移动......
  • putty超时解决方案
    putty连续3分钟左右没有输入,就自动断开,然后必须重新登陆,很麻烦.在网上查了很多资料,发现原因有多种,环境变量TMOUT引起,ClientAliveCountMax和ClientAliveInterval......
  • Netty网络编程-服务端启动问题总结
    1、NettyServerSocktChannel是如何初始化和注册的获取NioServerSocketChannel的实例,构造方法中还会做以下操作:通过SelectorProvider获取ServerSocketChannel。设......
  • Netty客户端使用以及重连
    Netty客户端使用以及重连1.pom依赖<dependency><groupId>io.netty</groupId> <artifactId>netty-all</artifactId> <version>4.1.30.Final</version></dependen......
  • PHP isset()与empty()的使用区别详解
    PHPisset()与empty()的使用区别详解_php基础_脚本之家 https://www.jb51.net/article/24666.htmPHP的isset()函数一般用来检测变量是否设置格式:boolisset(mixedva......
  • Netty网络编程-服务端启动
    1、Netty的Handler模型2、服务端代码示例根据模型图可以更好的理解ServerBootstrap引导类设置Netty的属性。publicclassTimeServer{privateintport;pub......
  • 尚硅谷-Netty篇
    学习内容P1P43,P110P116,中间章节好枯燥啊,暂时用不到,先跳过了IO模型参考:https://blog.csdn.net/lzb348110175/article/details/98941378学习链接:https://www.bilibili.co......