【linux内核剖析笔记】linux支持的终端设备类型及终端、控制台、串口、UART、RS232、RS485的联系和区别
1.1 Linux支持的终端设备类型
可以大致分为5种:
串行端口终端、伪终端、控制终端、控制台、其他类型,如下图所示;
1.1.1 串行端口终端(/dev/ttySn)
顾名思义,串行端口终端指的是终端,终端是什么?是具体的设备!所以串行端口终端指的是使用计算机串行端口连接的终端设备,这些串行端口对应的设备文件名在Linux /dev/目录下是ttyS0 ttyS1.
1.1.2 伪终端(/dev/ptyp、/dev/ttyp)
功能类似于终端的设备,但是这种设备不与任何终端硬件连接。伪终端均配对使用!往其中任意一个伪终端写入的数据都会通过内河直接由配对的伪终端接收到。最主要的应用就是在网上使用telnet程序连接计算机。
1.1.3 控制终端(/dev/tty)
字符设备文件/dev/tty是进程控制终端的别名,如果当前进程有控制终端,那么/dev/tty就是当前进程控制终端的设备文件。对于登录shell来讲,/dev/tty就是我们使用的终端。
1.1.4 控制台(/dev/ttyn,/dev/console)
在Linux中,显示器通常被称作控制台终端或控制台。有一些字符设备文件与之关联:tty0、tty1等,当我们在控制台登录时,使用的就是tty1,使用alt+{F1~F6}可以切换到其他tty设备。tty1~tty6被称为虚拟终端,而tty0则是当前所使用虚拟终端的一个别名。Linux系统产生的信息都会发送到tty0上。因为不管当前正在使用哪个虚拟终端,系统信息都会发送到我们的屏幕上。只有系统或超级用户root可以向/dev/tty0执行写操作!
1.1.5 其他类型
现在linux系统中针对不同字符设备建有相应的终端设备特殊文件,例如针对ISDN设备的/dev/ttyIn终端设备等。
1.2 终端、控制台、串口、UART、RS232、RS485的联系和区别
终端和控制台的定义见上面,但是区别还不很明显,如何区分?
事实上,现代OS对于终端和控制台的区分不严格。但你可以这么理解:控制台是直接和计算机相连接的原生设备,终端是通过电缆、网络、串口等等和主机连接的设备。由于现代PC都是一台机器一人用,基本不会有另外通过电缆网络等连接的设备,所以可以认为现代PC的控制台就是终端。
串口是串行通信接口的简称,是电脑和外部串行设备通信的接口,如下图所示,你可以理解其为一根线!
UART是通用异步收发传输器的简称,是电脑硬件的一部分,用于异步通信,就是将CPU发来的并行数据,通过上面的串口发送出去的一个硬件芯片。例如8250、16550等,如下图:
RS232和RS485是不同的通信标准,UART芯片会根据不同的通信标准进行制作。
参考资料:
1、《Linux内核完全剖析》