当前位置: 首页 > 工具软件 > PTS > 使用案例 >

tty与pts

慕容超
2023-12-01

tty与pts是终端设备中常见的两个词。以下是自己在学习几篇网络文章之后的理解,还待进一步完善。

1.终端与控制台

终端(terminal):最初的终端,是通过串口连接到计算机的设备(一般带有输入输出功能,如键盘和显示器)
控制台(console):最初的控制台,直接连接在电脑上的输入输出设备,一台计算机只允许有一个控制台,但可允许有多个终端。
随着计算机软硬件的发展,控制台 (Console) 与终端 (Terminal) 的概念已经逐渐模糊。如今,我们的键盘与显示器既可以认为是控制台,也可以认为是普通的终端。当你在管理系统时,它们是控制台;当你在做一般的工作时(浏览网页、编辑文档等),它们就是终端。

2.终端分类

字符终端和图形终端是终端的2种类型。
字符终端 (Character Terminal) 也叫文本终端 (Text Terminal),是只能接收和显示文本信息的终端。早期的终端全部是字符终端。
图形终端不但可以接收和显示文本信息,也可以显示图形与图像。

3.虚拟终端

虚拟终端:随着计算机的发展,现在我们已经见不到专门的终端硬件了,取而代之的则是键盘与全功能显示器。
但是没有了终端,我们要怎么与那些传统的、不兼容图形接口的命令行程序(比如说 GNU 工具集里的大部分命令)交互呢?这时候我们就需要一个程序来模拟传统终端的行为,可称之为虚拟终端。对于那些命令行 (CLI) 程序,虚拟终端会模拟一个传统终端设备;而对于现代的图形接口,虚拟终端会模拟一个 GUI 程序。

4.终端窗口 (Terminal Window) 与虚拟控制台 (Virtual Console)

终端窗口 (Terminal Window) 与虚拟控制台 (Virtual Console)是虚拟终端的2种表现形式。

1)终端窗口 (Terminal Window)

我们把图形用户界面 (GUI) 中运行的虚拟终端叫终端窗口(Terminal Window) 。如linux桌面发行版中打开的终端,以及各种SHELL终端软件。
终端窗口通过SHELL与内核沟通,并通过ptmx来对打开的终端分配设备文件。当在桌面或者远程打开一个终端后,SHELL都会通过ptmx给该终端分配一个类似这样的设备名:/dev/pts/**一般从0开始。第一个打开的终端窗口被分配到/dev/pts/0设备。

hollowman@hollowman-F117:~$ tty    #tty命令可以查看当前终端设备名,此处是用终端窗口打开的设备
/dev/pts/0

2)虚拟控制台 (Virtual Console)

在 GNU/Linux 操作系统中,有6个虚拟控制台,而这些控制台的设备文件就以tty来命名了,类似这样:/dev/tty*。可通过按下Ctrl+Alt+F1F6等组合键进行切换,并分别激活(或者说调用)`/dev/tty1`/dev/tty6等虚拟终端。

hollowman@hollowman-F117:~$ tty    #查看当前终端设备名,此处是用Ctrl+Alt+F1切换到的tty1虚拟控制台终端
/dev/tty1

当按下Ctrl+Alt+F7则可再次切换回图形界面,图形界面终端设备名为/dev/tty7

终端窗口是由图形界面创建的,而虚拟控制台则由内核直接驱动。当图形界面出现问题时,终端窗口将无法使用,而内核驱动的虚拟控制台则还仍可继续使用。

5.为什么要用tty这个名字?

其实,tty本来是电传打字机 (Teletype / Teletypewriter) 的英文缩写,而最早的Unix终端就是 ASR-33 电传打字机。
由于Unix被设计为一个多用户操作系统,所以人们会在计算机上连接多个终端(在当时,这些终端全都是电传打字机)。Unix系统为了支持这些电传打字机,就设计了名为tty的子系统,将具体的硬件设备抽象为操作系统内部位于/dev/tty*的设备文件。虽然随着计算机的发展,终端设备不再限制于电传打字机,但是tty这个名称却还是留了下来。久而久之,它们的概念就混淆在了一起。所以现在,tty指的就是终端设备。

有用的tty/pts学习概述:

Linux TTY/PTS概述

 类似资料: