tty,串口,控制台与驱动程序

tty 设备的名称是从过去的电传打字机缩写而来,最初是指链接到 Unix 系统上的物理或者虚拟终端。随着时间的推移,当通过串行口能够建立起终端连接后,这个名字也用来指任何的串口设备。物理 tty 设备的例子有串口、USB 到串口的转换器,还有需要特殊处理才能正常工作的调制解调器(比如传统的 WinModem 类设备)等。tty 虚拟设备支持虚拟控制台,它能通过键盘及网络连接或者通过 xterm 会话等登录到 Linux 系统。

Linux 系统有三种类型的 tty 驱动程序:控制台、串口和 pty。控制台和 pty 驱动程序已经被编写好,而且可能也不必为这两类 tty 驱动程序编写其他的驱动程序。这使得任何使用 tty 核心与用户和系统交互的新驱动程序都可被看成是串口驱动程序。

为了确定目前装载到内核中的是何种类型的 tty 驱动程序,并确定目前使用的是何种 tty 设备,可以查阅 /proc/tty/drivers 文件。该文件列举了当前使用的不同的 tty 驱动程序,显示了驱动程序的名称、默认的节点名称、驱动程序的主设备号、驱动程序所使用的次设备号范围以及 tty 驱动程序的类型。如下图所示:

tty,串口,控制台与驱动程序

如果 tty 驱动程序执行了所包含的功能,则 /proc/tty/driver/ 目录下包含了若干独立文为 tty 驱动程序所使用,默认的串口驱动程序会在该目录下创建一个文件,显示许多关于串行硬件的特殊信息。

当前注册并存在于内核的 tty 设备在 /sys/class/tty 下都存在自己的子目录,在系统的 /dev 目录下存在对应的设备文件与之对应,通过设备文件可以看到分配给该 tty 设备的主设备号和次设备号。如果驱动程序告诉内核物理设备的路径以及分配给该 tty 设备的驱动程序,它将创建一个指向它们的符号链接。使用 tree 命令可以查看该目录树,如下图所示:

tty,串口,控制台与驱动程序

以上就是 Linux 中 tty 设备与串口、控制台的简单区别以及 tty 驱动描述了。由于历史发展原因,几个概念在 Linux 中多次被提及,但是区别还是很模糊,因此查阅资料并实验总结了下。


如果有想法或者疑问可以给我邮件或者评论,觉得有用就点赞吧~:-D