TTY体系框架中设备节点

您所在的位置:网站首页 键盘驱动程序在哪 TTY体系框架中设备节点

TTY体系框架中设备节点

2023-07-08 01:33| 来源: 网络整理| 查看: 265

文章目录 设备节点之间的差别TTY/Terminal/Console/UART,它们有什么差别?个人电脑和虚拟终端在Ubuntu上演示Terminal和Console的差别TTY驱动程序框架行规程的引入

设备节点之间的差别

/dev/ttyS0、/dev/ttySAC0、/dev/tty、/dev/tty0、/dev/tty1、/dev/console,它们有什么差别?

设备节点含义/dev/ttyS0、/dev/ttySAC0串口/dev/tty1、/dev/tty2、/dev/tty3、……虚拟终端设备节点/dev/tty0前台终端/dev/tty程序自己的终端,可能是串口、也可能是虚拟终端/dev/console控制台,由内核的cmdline参数确定 TTY/Terminal/Console/UART,它们有什么差别? 术语含义TTY来自teletype,最古老的输入输出设备,现在用来表示内核的一套驱动系统Terminal终端,暗含远端之意,也是一个输入输出设备,可能是真实设备,也可能是虚拟设备Console控制台,含控制之意,也是一种Terminal,权限更大,可以查看内核打印信息UART串口,属于输入输出设备,它的驱动程序包含在TTY驱动体系之内

现在的TTY就理解为输入输出设备的统一接口 由此衍生了TTY驱动程序框架 串口、键盘、显示屏,都包含在该TTY驱动体系中

个人电脑和虚拟终端 个人电脑:包含计算单元(CPU、硬盘、内存等等)、终端(键盘、显示器)都齐全,硬件上只有一套键盘、显示器。在Linux系统中,我们可以打开多个命令行程序(也叫terminal、shell),每个程序都对应一个"虚拟终端"。 在Ubuntu上演示

按住键盘:Ctrl+Alt+F3启动一个虚拟终端,Ctrl+Alt+F4再启动一个虚拟终端。

在里面切换为root用户:

sudo passwd root // 如果su root不成功,就先设置root密码 su root

由于历史原因,下图中两条红线之内的代码被称为TTY子系统。

它既支持UART,也支持键盘、显示器,还支持更复杂的功能(比如伪终端)。

在这里插入图片描述

/dev/tty0:表示前台程序的虚拟终端,你正在操作的界面,就是前台程序

其他后台程序访问/dev/tty0的话,就是访问前台程序的终端,切换前台程序时,/dev/tty0是变化的

// 1. 在tty3终端执行如下命令 // 2. 然后在tty3、tty4来回切换,此时发现两个虚拟终端都会打印输出 while [ 1 ]; do echo msg_from_tty3 > /dev/tty0; sleep 5; done

/dev/tty:表示当前程序所在的终端,可能是虚拟终端,也可能是真实的终端。程序A在前台、后台间切换,它自己的/dev/tty都不会变。

// 1. 在tty3终端执行如下命令 // 2. 然后在tty3、tty4来回切换 while [ 1 ]; do echo msg_from_tty3 > /dev/tty; sleep 5; done Terminal和Console的差别

Terminal含有远端的意思,中文为:终端。Console翻译为控制台,可以理解为权限更大、能查看更多信息。

比如我们可以在Console上看到内核的打印信息,从这个角度上看:Console是某一个Terminal,Terminal并不都是Console。我们可以从多个Terminal中选择某一个作为Console,很多时候,两个概念混用,并无明确的、官方的定义

通过cat /proc/cmdline可以查看到console设备指定的终端,如果没有指定:

在这里插入图片描述

对于console指定的终端,可以通过内核的cmdline来指定,比如: console=ttyS0 console=tty,在终端输入reboot,然后按住esc不放,此时进入操作界面,输入e进入“Advanced options for Ubuntu”选项,找到linux关键字,删除quiet(屏蔽所有的内核打印信息),然后输入“console=ttyS0 console=tty3”,按下F4退出,再选择第一个选项(版本),按下回车,此时会打印内核信息在前台终端

如果不想去分辨这个设备是串口还是虚拟终端,有没有办法得到这个设备? 有!通过/dev/console!

console=ttyS0时:/dev/console就是ttyS0console=tty时:/dev/console就是前台程序的虚拟终端console=tty0时:/dev/console就是前台程序的虚拟终端console=ttyN时:/dev/console就是/dev/ttyNconsole有多个取值时,使用最后一个取值来判断

在任意一个中断输入下面指令,最终会在tty3终端输出信息,因为在cmdline里面设定了console绑定的终端

echo msg_to_console > /dev/console; TTY驱动程序框架

在这里插入图片描述

串口、键盘、显示屏,这些硬件都有对应的驱动,用户层通过TTY提供的接口去调用这些硬件,因为TTY会屏蔽这些硬件的差别

对于同一套键盘或显示屏,可以对应不同的虚拟终端

行规程将键盘的输入通过显示屏展示:回显 行规程会识别到输入的enter命令,将buffer内容上传到APP

行规程的引入

在这里插入图片描述

为了方便起见,操作系统提供了一个编辑缓冲区和一些基本的编辑命令(退格,清除单个单词,清除行,重新打印),这些命令在行规范(line discipline)内默认启用。高级应用程序可以通过将行规范设置为原始模式(raw mode)而不是默认的成熟或准则模式(cooked and canonical)来禁用这些功能。大多数交互程序(编辑器,邮件客户端,shell,及所有依赖curses或readline的程序)均以原始模式运行,并自行处理所有的行编辑命令。行规范还包含字符回显和回车换行(译者注:\r\n 和 \n)间自动转换的选项



【本文地址】


今日新闻


推荐新闻


CopyRight 2018-2019 办公设备维修网 版权所有 豫ICP备15022753号-3