- 整理一下,内容会不太准确,不太严谨。
tty | teletypewriter (电传打字机) | 终端设备(Terminal) |
pty | pseudo tty | 伪终端 |
pts | pseudo-terminal slave | |
ptmx | pseudo-terminal master multiplexer |
历史?
tty ==> 泛指所有终端(Terminal)
tty
它是 Teletype(或者TeletypeWriter)的缩写,中文翻译:电传打字机。
电传打字机通常由键盘、收发报器和印字机构等组成。电传打印机是一个比较早出现的产品,为在传真机普遍使用以前的通信设备,其原理采用有点近似电报。它可安装在办公室内,因而毋须到电报局去发电传。
Terminal
终端,一种电子的或机电的硬件设备,用来向大型主机输入数据并显示来自主机的数据。
为了充分使用计算机提供的计算资源,早期很多计算机会连接若干终端控制台,这些终端从硬件上构造很简单,不执行计算的任务,只简单的把用户的输入发送到主计算机去处理,然后再把计算结果返回给用户。
前面的电传打字机就是最早的计算机的终端。后被显示器和键盘所取代。它们通过串口(通常是RS232)和主机相连。分哑终端(dumb terminal)和智能终端(start terminal)。或者叫瘦客户端(thin client)和胖客户端(fat client)。
进入PC时代,显示器不再包含字符生成的硬件,所有的视频信号都是由位于PC内的显卡生成的。这时的显示器不再是终端了,当PC链接大型主机时,可以来模拟终端(比如通过telnet)
Virual console
虚拟控制台(VC),或者称为虚拟终端(virtual terminal)。它是计算机用户界面键盘和显示的概念上的组合(is a conceptual combination of the keyboard and display for a computer user interface. )?
它是类unix系统的一个特性。比如在Linux下,通过
Ctrl+Alt+F1~6
可以在六个虚拟控制台之间进行切换。
terminal emulator
随着X视窗系统的广泛使用,虚拟控制台的使用需求也越来越少,控制台程序可以在终端模拟器(terminal emulator)中运行
这些被称为伪终端(Pseudo Terminal)
Pseudo Terminal
伪终端是是一个伪设备对。有两种命名风格
BSD PTYs | slave | /dev/tty[p-za-e][o-9a-f] |
master | /dev/pty[p-za-e][0-9a-f] | |
Unix98 PTYs | slave | /dev/pts/N |
master | /dev/ptmx |
Linux终端设备
- 虚拟控制台(Virtual console)
在linux下,通过Ctrl+Alt+F1~6切换到虚拟控制台,运行tty和stty可以看到
debao@ubuntu:~$ tty /dev/tty1 debao@ubuntu:~$ stty speed 38400 baud; line = 0; -brkint ixoff -imaxbel -iexten
- 控制台设备
系统启动时,选择单用户模式
debao@ubuntu:~$ tty /dev/console
- 串口
这个东西好复杂啊
普通串口 | /dev/ttyS[0~191] |
Serial Mux Device | /dev/ttyB[0~] |
Chase Serial Card(OBSOLETE) | /dev/ttyH[0~] |
Cyclades Serial Card | /dev/ttyC[0~31] |
Digiboadr Serial Card | /dev/ttyD[0~] |
Stallion Serial Card | /dev/ttyE[0~63,64~127,...] |
Specialix Serial Card | /dev/ttyX[0~] |
isdn4linux virtual modem | /dev/ttyI[0~63] |
Comtrol Rocketport serial card | /dev/ttyR[0~] |
SDL RISCom serial card | /dev/ttyL[0~] |
Hayes ESP serial card | /dev/ttyP[0~] |
Computone IntelliPort II serial card | /dev/ttyF[0~63,64~127,...] |
Specialix IO8+ serial card | /dev/ttyW[0~7,8~15,...] |
PAM Software's multimodem boards | /dev/ttyM[0~] |
Comtrol VS-1000 serial controller | /dev/ttyV[0~] |
ISI serial card | /dev/ttyM[0~] |
Technology Concepts serial card | /dev/ttyT[0~] |
Specialix RIO serial card | /dev/ttySR[0~255] |
Chase Research AT/PCI-Fast serial card | /dev/ttyCH[0~15,16~31,..] |
ACM USB modems | /dev/ttyACM[0~] |
Moxa Intellio serial card | /dev/ttyMX[0~127] |
SmartIO serial card | /dev/ttySI[0~] |
USB serial converters | /dev/ttyUSB[0~] |
Low-density serial ports | /dev/ttyLU[0~3] |
/dev/ttyFB0 | |
/dev/ttySA[0~2] | |
/dev/ttySC[0~3] | |
/dev/ttyFW[0~3] | |
/dev/ttyAM[0~15] | |
/dev/ttyDB[0~7] | |
... | |
User space serial ports | /dev/ttyU[0~] |
Bluetooth RFCOMM TTY devices | /dev/rfcomm[0~] |
A2232 serial card | /dev/ttyY[0~] |
Equinox SST multi-port serial boards | /dev/ttyEQ[0~127,...] |
- 伪终端(PTY)
在窗口系统中打开Terminal,运行tty和stty
debao@ubuntu:~/qt-labs/qt5$ cd debao@ubuntu:~$ tty /dev/pts/6 debao@ubuntu:~$ stty speed 38400 baud; line = 0; -brkint ixoff -imaxbel iutf8
那么Linux的 /dev 目录下的东西,哪些和终端有关系呢?(所有均是字符设备)
列个表
每一个设备会有主、次设备号,主设备号相同的代表同类设备(即:使用同一个驱动程序)
主设备号 | 次设备号 | ||
2(伪终端 master) | 0 | /dev/ptyp0 | 老式的BSD风格 |
... | ... | ||
255 | /dev/ptyef | ||
3(伪终端 slave) | 0 | /dev/ttyp0 | |
... | ... | ||
255 | /dev/ttyef | ||
4 (TTY设备) | 0 | /dev/tty0 | 当前虚拟控制台 |
1 | /dev/tty1 | 各个虚拟控制台 | |
... | ... | ||
63 | /dev/tty63 | ||
64 | /dev/ttyS1 | 串口(S代表Serial Port),注意大写 | |
... | ... | ||
255 | /dev/ttyS191 | ||
5 (其他TTY设备) | 0 | /dev/tty | 当前TTY设备 |
1 | /dev/console | 系统控制台 | |
2 | /dev/ptmx | 所有伪终端 PTY master 复用 | |
3 | /dev/ttyprintk | ? | |
64 | /dev/cua0 | 对应ttyS0~191的callout设备 | |
... | ... | ||
255 | /dev/cua191 | ||
7(虚拟控制台捕捉设备) | 0 | /dev/vcs | 当前虚拟控制台(VC)的文本内容 |
1 | /dev/vcs1 | 各个虚拟控制台的文本内容 | |
... | ... | ||
6 | /dev/vcs6 | ||
128 | /dev/vcsa | 当前虚拟控制台的文本/属性 | |
129 | /dev/vcsa1 | 各个虚拟控制台的文本/属性 | |
... | ... | ||
134 | /dev/vcsa6 | ||
128-135 | Pty Master(不应该存在,使用 /dev/ptmx)? | ||
136-143 | 0 | /dev/pts/0 | Pty Slave |
1 | /dev/pts/1 | ||
... | ... |