TTY子系统初探,你学会了吗?
一、TTY子系统介绍
1、TTY介绍
TTY,一词源于Teleprinter,译为电传打印机,在早起用来表示电脑终端的设备。
现在我们通常使用TTY,是各种(物理/虚拟)终端的统称!
Linux系统的终端设备一般分为控制台终端、伪终端、串口终端和其他类型四种。
下面我们来进一步了解这些Linux下常用的终端,为学习Linux TTY Framework打下基础!
2、控制台终端
控制台终端包括:系统控制台、当前控制台、虚拟控制台。
2.1 系统控制台
系统控制台,也就是我们Linux下面的/dev/console,是与操作系统交互的设备,系统所产生的信息会发送到该设备上。
目前只有在单用户模式下,才允许用户登录控制台/dev/console。
console有缓冲的概念,为内核提供打印输出。内核把要打印的内容装入缓冲区__log_buff,然后由console指向某个激活的终端,来决定打印到哪里。console指向激活的终端。
比如,我们在启动内核的时候,传入的参数cnotallow=ttyS1,将控制台终端指向ttyS1串口设备。
2.2 当前控制台
这是应用程序中的概念,如果当前进程有控制终端(Controlling Terminal),那么/dev/tty就是当前进程控制台的设备文件。
对于登录的Shell,/dev/tty就是你正在使用的控制台,设备号(5,0),/dev/tty会映射到当前设备(使用命令tty可以查看它具体对应哪个实际物理控制台设备),输出到/dev/tty的内容只会显示在当前工作终端上。
你可以输入命令tty,显示当前映射的实际终端如:/dev/tty1或者/dev/pts/0等。
2.3 虚拟控制台
/dev/ttyn是进程虚拟控制台,他们共享同一个真实的物理控制台。
在PC上,用户可以使用Ctrl + Alt + Fn切换,这种虚拟控制台对应tty1~n,其中:/dev/tty1代表第1个虚拟控制台;当使用Ctrl + ALT+F2进行切换时,系统的虚拟控制台为/dev/tty2 ,当前控制台(/dev/tty)则指向/dev/tty2
而比较特殊的是/dev/tty0,他代表当前虚拟控制台,其实就是当前所使用虚拟控制台的一个别名。因此不管当前正在使用哪个虚拟控制台(注意:这里是虚拟控制台,不包括伪终端),系统信息都会重定位到/dev/tty0上。
只有系统或超级用户root可以向/dev/tty0进行写操作。tty0是系统自动打开的,但不用于用户登录
3、伪终端
伪终端(Pseudo Terminal)是终端的发展,它多用于模拟终端程序,是远程登陆(telnet、ssh、xterm等)后创建的控制台设备。
它是成对出现的逻辑终端设备(即master和slave设备, 对master的操作会反映到slave上)。简单说主终端和类似sshd,telnetd等用户空间的远程协议处理进程连接,而从终端则和shell之类的实际进程连接。
4、串口终端
串行端口终端(Serial Port Terminal)是使用计算机串行端口连接的终端设备。计算机把每个串行端口都看作是一个字符设备。所以这些串行端口所对应的设备名称是/dev/ttyS0、/dev/ttyS1等,设备号分别是(4,0)、(4,1)等
若要向一个端口发送数据,可以在命令行上把标准输出重定向到这些特殊文件名上即可。
我们可以在命令行提示符下键入:echo "tekkaman" > /dev/ttyS1会把“tekkaman”发送到连接在ttyS1(COM2)端口的设备上。
在2.6以后的内核后,一些三星的芯片将串口终端设备节点命名为ttySACn。
TI的Omap系列芯片从2.6.37开始,芯片自带的UART设备开始使用专有的的omap-uart驱动,故设备节点命名为ttyOn,以区别于使用8250驱动时的设备名“ttySn”。
5. 其它类型
还针对很多不同的字符设备存在有很多其它种类的终端设备特殊文件,例如针对ISDN设备的**/dev/ttyIn**终端设备等。
https://blog.csdn.net/liangzc1124/article/details/127469767
相关文章
- 大漠插件最新版7.2248下载
- (首发)12-80V 2A 亮/半亮/爆闪 三功能LED车灯方案
- KeyShot Pro 10.2 for Mac(3D模型渲染软件) v10.2.113中文版
- 浅析VO、DTO、DO、PO的概念、区别和用处
- Claydo-Easy 3D Modelling for Mac(简单的3D建模软件) v1.8激活版
- 如何设计一个短链服务?
- 工业革命4.0时代,人工智能市场对“新零售”有怎样的助力突破?
- Node.js 应用程序的 Docker 安全优秀实践
- 焊接机器人高温焊渣怎么处理
- Adobe2023全家桶详细软件功能讲解及配置要求
- Photoshop2023最新中文版ps软件安装教程
- mac新手必备的6款软件 特别适合mac新手日常使用
- CAD去教育版插件合集(最高支持CAD2020版)CAD软件全版本下载
- 22个每个程序员都应该知道的 Git 命令
- 人员超员识别系统
- IDM是一款强大的下载工具 idm多个版本(电脑、手机、浏览器插件都有)
- 关于PDF神器,也许是史上最全的整理pdf编辑器全版本下载
- 微服务设计的十条参考指南
- 是什么让一段20行代码的性能提升了10倍
- Go 语言创始人:复制亿点点代码比用别人轮子好!