Linux--tty

四 linux tty驱动 一. tty结构体 1.tty_driver struct tty_driver { int magic; struct kref kref; //参考计数 struct cdev cdev; //字符设备 struct module *owner; //模块所有者 const char *driver_name; //驱动名 const char *name; //设 阅读详情

Linux 终端(TTY)

TTY 是 Teletype 或 Teletypewriter 的缩写,原来是指电传打字机,后来这种设备逐渐键盘和显示器取代。不管是电传打字机还是键盘显示器,都是作为计算机的终端设备存在的,所以 TTY 也泛指计算机的终端(terminal)设备。为了支持这些 TTY 设备,Linux 实现了一个叫做 TTY 的子系统。所以 TTY 既指终端,也指 Linux 的 TTY 子系统。本文中演示部分使用的环境为 ubuntu 22.04。

硬件终端 terminal(TTY)

早期的终端(terminal) 是一台独立于计算机的机器(teletype 即, TTY),大概像下面的样子:
在这里插入图片描述
它终端通过线缆与计算机连接,并完成计算机的输入输出功能:
现在物理终端实际上已经灭绝了,我们看到的所有 TTY 都是模拟视频终端,即软件仿真出来的终端。可以通过 toe -a 命令查看系统支持的终端类型,该列表很长。

qz@ubuntu22:~$ toe -a
ergo4000  	microterm ergo 4000
excel62-w 	datamedia Excel 62 in 132 char mode
excel62-rv	datamedia Excel 62 in reverse video mode
emu       	emu native mode
env230    	envision 230 graphics terminal
ecma+color	color control for ECMA-48-compatible terminals
excel62   	datamedia Excel 62
elks      	default ELKS console
elks-glasstty	ELKS glass-TTY capabilities
elks-vt52 	ELKS vt52 console
esprit-am 	hazeltine esprit auto-margin
eterm-color	Emacs term.el terminal emulator term-protocol-version 0.96
emu-220   	Emu-220 (vt200-7bit mode)
ep40      	execuport 4000
esprit    	Hazeltine Esprit I
ecma+sgr  	attribute capabilities for true ECMA-48 terminals
.....................

控制台

提到终端就不能不提控制台 console。控制台的概念与终端含义非常相近,其实现在我们经常用它们表示相同的东西,但是在计算机的早期时代,它们确实是不同的东西。
一些数控设备(比如数控机床)的控制箱,通常会被称为控制台,顾名思义,控制台就是一个直接控制设备的面板,上面有很多控制按钮。 在计算机里,把那套直接连接在电脑上的键盘和显示器就叫做控制台。而终端是通过串口连接上的,不是计算机自身的设备,而控制台是计算机本身就有的设备,一个计算机只有一个控制台。**计算机启动的时候,所有的信息都会显示到控制台上,而不会显示到终端上。**这同样说明,控制台是计算机的基本设备,而终端是附加设备。计算机操作系统中,与终端不相关的信息,比如内核消息,后台服务消息,都可以显示到控制台上,但不会显示到终端上。比如在启动和关闭 Linux 系统时,我们可以在控制台上看到很多的内核信息(下图来自 vSphere Client 中的 “Virtual Machine Console”):
在这里插入图片描述

现在终端和控制台都由硬件概念,逐渐演化成了软件的概念。简单的说,能直接显示系统消息的那个终端称为控制台,其他的则称为终端(控制台也是一个终端)。或者我们在平时的使用中压根就不区分 Linux 中的终端与控制台。

Linux 总是把写入 /dev/console 的内容会显示在控制台中当前的虚拟终端(tty1-tty6)里。

TTY 设备

从历史上看,终端刚开始就是终端机,配有打印机,键盘,带有一个串口,通过串口传送数据到主机端,然后主机处理完交给终端打印出来。电传打字机(teletype)可以被看作是这类设备的统称,因此终端也被简称为 TTY(teletype 的缩写)。
如下图所示
在这里插入图片描述
UART 驱动
如上图所示,物理终端通过电缆连接到计算机上的 UART(通用异步接收器和发射器)。操作系统中有一个 UART 驱动程序用于管理字节的物理传输。
​
行规范
上图中内核中的 Line discipline(行规范)用来提供一个编辑缓冲区和一些基本的编辑命令(退格,清除单个单词,清除行,重新打印),主要用来支持用户在输入时的行为(比如输错了,需要退格)。
​
TTY 驱动
TTY 驱动用来进行会话管理,并且处理各种终端设备。
​
UART 驱动、行规范和 TTY 驱动都位于内核中,它们的一端是终端设备,另一端是用户进程。因为在 Linux 下所有的设备都是文件,所以它们三个加在一起被称为 “TTY 设备”,即我们常说的 TTY。

从软件仿真终端到伪终端

后来的终端慢慢演变成了键盘 + 显示器。如果我们要把内容输出到显示器,只要把这些内容写入到显示器对应的 TTY 设备就可以了,然后由 TTY 层负责匹配合适的驱动完成输出,这也是 Linux 控制台的工作原理(
在这里插入图片描述
上图中,TTY 驱动和行规范的行为与前面的示例类似,但不再有 UART 或物理终端。相反,软件仿真出视频终端,并最终被渲染到 VGA 显示器。注意,这里出现了软件仿真终端,它们是运行在内核态的。
tty1-tty6 都是软件仿真终端:
/dev/tty1-/dev/tty6 是这些仿真终端在文件系统中的表示,程序通过对这些文件的读写实现对仿真终端的读写。

如果我们在用户空间也进行终端仿真,情况会变得更加灵活,下图是 xterm 及其克隆的工作方式:

为了便于将终端仿真移入用户空间,同时仍保持 TTY 子系统(TTY 子系统指 TTY 驱动和行规范)的完整,伪终端被发明了出来(pseudo terminal 或 pty)。伪终端在内核中分为两部分,分别是 master side 和 在 TTY 驱动中实现的 slave side。注意上图中的 xterm,这是一个运行在用户态的终端仿真程序,比如 Ubuntu Desktop 中的 GNOME Terminal:

当创建一个伪终端时,会在 /dev/pts 目录下创建一个设备文件:

如果是通过 PuTTY 等终端仿真程序通过 SSH 的方式远程连接 Linux,那么终端仿真程序通过 SSH 与 PTY master side 交换数据。

终端与伪终端的区别

至此我们可以得出这样的结论:现在所说的终端已经不是硬件终端了,而是软件仿真终端(终端模拟软件)。
关于终端和伪终端,可以简单的理解如下:

  • 真正的硬件终端基本上已经看不到了,现在所说的终端、伪终端都是软件仿真终端(即终端模拟软件)
  • 一些连接了键盘和显示器的系统中,我们可以接触到运行在内核态的软件仿真终端(tty1-tty6)
  • 通过 SSH 等方式建立的连接中使用的都是伪终端
  • 伪终端是运行在用户态的软件仿真终端

总结

通过本文我们可以了解到,真正的硬件终端基本上已经看不到了。在一些连接了键盘和显示器的系统中(当然也包括一些 vsphere 等虚拟环境),我们可以接触到运行在内核态的软件仿真终端。而我们使用最多的则是伪终端。

Linux内核笔记(驱动篇)之 【tty子系统①】 tty(Teletype)子系统是Linux内核中的一个子系统,负责处理终端设备和串行设备的输入输出。它提供了一个抽象层,使用户和应用程序可以与终端设备进行交互。串口是嵌入式设备非常重要的一个模块,嵌入式开发中90%的问题都需要靠串口打印调试来解决,它的重要性不言而喻。而tty子系统也承担着这个承上启下的任务。直观感受一下这张图:在/dev目录下有很多个tty设备,其中ttymxc0跟ttymxc1是串口相关的。 阅读详情

相关推荐

从论文到生产:iSLIP优先级匹配算法在SDN交换机中的20年演进史

本文回顾了iSLIP优先级匹配算法在SDN交换机中的20年演进历程,从斯坦福大学的原始论文到现代芯片实现。通过独特的指针滑动和迭代循环机制,iSLIP算法显著提升了交换机的吞吐量和公平性,解决了传统FIFO调度的队头阻塞问题。文章详细探讨了算法在硬件实现中的工程挑战、开源实践及未来AI时代的智能调度方向。

weixin_29230649的博客 331

Linux TTY(Teletypewriter)概念;虚拟终端伪终端pty(pseudo-tty、pseudo terminal)、ptmx(主设备master)pts(从设备slave)

在服务器上,TTY设备可以通过SSH等远程登录方式进行访问,管理员可以通过TTY设备管理服务器。终端设备是一种通过串行接口与计算机连接的设备,可以显示计算机的输出结果,并将用户的输入传递给计算机。伪终端是一种特殊的设备,它提供了一个类似于物理终端的接口,可以用于在用户空间和内核空间之间进行交互。与终端交互:TTY设备是用户与计算机进行交互的接口,了解TTY概念可以帮助开发者编写与终端交互的程序。需要注意的是,虽然终端设备的名称可能不同,但它们在功能上是相似的,都可以用于与用户进行交互和执行命令。

Dontla的博客 5586

cadence—virtuosoic617的使用技巧收集区

cadence使用

qq_33599939的博客 3万+

Linux 上的 TTY 是什么?

TTY 是 Linux 操作系统中一个基本且重要的概念,它涵盖了物理终端、虚拟控制台和伪终端等多种形式。理解 TTY 的工作原理和使用方法对于系统管理和故障排除具有重要意义。无论是在服务器管理还是在嵌入式系统开发中,TTY 都是一个不可或缺的工具。

sagima_sdu的博客 5345

信创环境下,软件测试如何破局?

毕竟,在自主可控的道路上,每一行通过测试的代码,都在为信创产业的未来添砖加瓦。未来,测试工程师不仅要验证软件在信创环境的可用性,更要基于国产软硬件的特性,推动软件进行 “原生设计”—— 例如,针对国产 CPU 的多核架构优化代码,基于国产数据库的索引机制提升查询效率。某政务云平台的测试数据显示,在 “飞腾芯片 + 麒麟操作系统” 环境下,系统的并发处理能力较传统环境下降约 15%,测试团队通过优化软件的线程调度逻辑,最终将性能损失控制在 5% 以内 —— 这正是信创性能测试的价值所在。

weixin_45608163的博客 886

2025年09月中国电子学会青少年软件编程(Python)等级考试试卷(一级)答案 + 解析

2025年09月中国电子学会青少年软件编程(Python)等级考试试卷(一级)答案 + 解析

伶俐角少儿编程 639

Linux应用开发笔记(六)串口和TTY体系(串口子系统)

串口是我们在调试中常常需要的一环,它可以帮助我们实时打印信息,其基础知识在之前的学习笔记中已经提到了,感兴趣或者用什么问题可以回顾一下,这部分主要解释Linux下的TTY体系。TTY设备不仅支持UART(通用异步收发传输器)通信,还支持键盘输入、显示器输出以及更复杂的功能,如伪终端。TTY体系在Linux系统中指的是一种终端设备体系,它提供了用户与操作系统之间的交互界面。TTY一词源于Teleprinter(电传打印机),在早期的计算机系统中,TTY是以打字机作为输入输出设备的终端系统。

sincerelover的博客 6426

从零开始讲DDR(5)——读懂Datasheet

对于开发人员来说,需要根据实际场景和使用的需要,使用不同厂家,不同型号的DDR,虽然原理上大同小异,但是还是有一些细节上的需要注意的地方,接触一个新的DDR芯片,首先就是需要找到对应的datasheet,而能都读懂datasheet,也是一个硬件工程师的必备技能。

apple_53311083的博客 5221

Linux 终端(TTY)

通过本文我们可以了解到,真正的硬件终端基本上已经看不到了。在一些连接了键盘和显示器的系统中(当然也包括一些 vsphere 等虚拟环境),我们可以接触到运行在内核态的软件仿真终端。而我们使用最多的则是伪终端。解密TTYLinux TTY/PTS概述终端、虚拟终端、shell、控制台、tty的区别sparkdevsparkdev - 博客园本文版权归作者和博客园共有,欢迎转载,但未经作者同意必须保留此段声明,且在文章页面明显位置给出原文连接,否则保留追究法律责任的权利。

Chocolate的博客 2952

YOLOv11魔改高效涨点 | 注意力篇 | SimAM注意力:基于神经科学的 3D 注意力机制,三维权重的暴力美学,无参数也能暴力涨点?代码极简,彻底疯狂!!!

在本文中,我们为卷积神经网络(ConvNets)提出了一个概念简单但非常有效的注意力模块。与现有的通道注意力(Channel-wise)和空间注意力(Spatial-wise)模块不同,我们的模块在不向原始网络添加参数的情况下,推断出层中特征图的 3D 注意力权重。具体来说,我们基于一些知名的神经科学理论,提出优化一个能量函数来寻找每个神经元的重要性。我们进一步推导出了该能量函数的快速闭式解,并表明该解可以用不到十行代码实现。

猫天意的博客 248

Python全栈入门到实战【进阶篇 1】类与对象:面向对象编程的基石

Python中定义类使用**class关键字**,创建对象使用**类名()**(类似调用函数),语法简洁,我们从最基础的空类开始,逐步拆解。class# 定义空的学生类,pass表示占位,无实际内容 class Student : pass编码规范:类名遵循大驼峰命名法(每个单词首字母大写,无下划线),如StudentCarPhone,这是Python官方推荐的PEP8规范,便于区分类和其他标识符。实例方法必须定义在类内部;实例方法的第一个参数必须是self(名称可自定义,如this。

那些看似不起波澜的日复一日,会在某天让你看到坚持的意义 3405

Linux TTY Driver

引用 蜗蜗科技 http://www.wowotech.net/tty_framework/435.html Linux终端和Line discipline图解 https://blog.youkuaiyun.com/dog250/article/details/78818612 一. TTY drive框图 二. TTY framework 2.1 框图 2.2 数据结构图 三. ...

vertor11的博客 1873

Opencascade 保存点云为 .stp 和 .step 格式

总结一下,OpenCascade提供了强大的功能和工具,使我们能够方便地将点云数据保存为 .stp 和 .step 格式。通过使用类似于上述示例代码的方法,你可以使用OpenCascade库将点云数据保存为.STP和.STEP格式。总结一下,使用OpenCascade库,你可以方便地将点云数据保存为.STP和.STEP格式。通过使用类似于上述示例代码的方法,你可以将点云数据转换为OpenCascade的几何模型,并将其保存为所需的文件格式。请注意,上述代码仅涵盖了将点云数据保存为.STP格式的基本步骤。

CwzCode的博客 1157

linux TTY子系统(3) - tty driver

了解linux tty driver 1.TTY device   kernel从设备模型和字符设备两个角度对它进行了抽象: 设备模型的角度   为每个“数据通道”注册了一个stuct device,以便可以在sysfs中体现出来,例如: /sys/class/tty/tty /sys/class/tty/console /sys/class/tty/ttyS0 字符设备的角度    为每个“数据通道”注册一个struct cdev,以便在用户空间可以访问,例如: /dev/tty /dev.

weixin_41028621的博客 2167

VB摄像头监控

该VB模块可对摄像头捕获的画面进行录像等,可在创建的窗口进行控制

LinePhone3.2.7(android端最新版本) sip客户端

SIP客户端For android:LinePhone3.2.7(最新版本),官网地址:http://www.linphone.org/

linux怎么看tty连接哪个端口,Linux TTY framework(4)_TTY driver

Linux TTY framework(4)_TTY driver作者:wowo 发布于:2016-10-25 22:40分类:TTY子系统1. 前言本文将从驱动工程师的角度去看TTY framework:它怎么抽象、管理各个TTY设备?它提供了哪些编程接口以方便TTY driver的开发?怎么利用这些接口编写一个TTY driver?等等。注1:话说介绍各个framework的时候,我一直比较喜...

weixin_29912207的博客 1247

jre9下载 jdk9

(Java SE Runtime Environment 9.0) 9.0u175 官方最新版 【x86|x64】

linux tty driver

Linux TTY 驱动 1.前言 上世纪,六七十年代,虽然已经有电脑了,但还没有普及,电脑还是极其昂贵的,普通老百姓都买不起这么贵的一台电脑。那时候,UNIX的发明人——汤普森,为了实现多用户能够同时登陆UNIX系统的目的,使用非常廉价的TTY设备连接电脑,通过TTY设备发送和接收来自UNIX系统的信息,实现系统连接多个TTY设备的功能,多个用户可以同时登陆UNIX系统。 Lin

尔华的博客 1189

IMSL CNL 7.0.0 (x86-64)Crack

IMSL CNL 7.0.0 (x86-64)Crack intel的算法库破解文件,这是C++版本的破解文件

linux tty是什么_什么是Linux TTY?

linux tty是什么In the old times of Unix and BSD where Windows was not born the systems were very different. Computers were big and heavy but very weak according to these days. The use cases and system ar...

cunjiu9486的博客 495

linux tty、伪tty是什么?

Linux 黑话解释:TTY 是什么? | Linux 中国看不太懂。。参考文章:linux中tty是什么意思

Dontla的博客 1360

Linux下的tty的使用

1.查看机器目前所有的在运行的TTY [root@localhost ~]# w 05:49:15 up 23 min, 3 users, load average: 0.00, 0.04, 0.08 USER TTY FROM LOGIN@ IDLE JCPU PCPU WHAT root tty1 ...

jesh_stonish的博客 3038

Linux——TTY子系统

TTY到底是什么东西?我们常常挂在嘴边的终端(terminal)、控制台(console)等概念,到底是什么意思?本文是Linux TTY framework分析文章的第一篇,将带着上述疑问,介绍TTY有关的基本概念,为后续的TTY软件框架的分析,以及Linux serial subsystem的分析,打好基础。们在使用Linux系统的过程中,每时每刻都在和TTY打交道,显示输出、键盘输入、用户登录、shell终端、等等。这些习以为常的行为,怎么和kernel中的这些冷冰冰的代码联系起来的?

qq_59675262的博客 1273

linux 切换界面tty2,Linux 中不适用功能键切换TTY

本简要指南介绍了在类 Unix 操作系统中如何在不使用功能键的情况下切换 TTY。在进一步讨论之前,我们将了解 TTY 是什么。正如在 AskUbuntu 论坛的一个答案[1]中所提到的,TTY这个词来自 TeleTYpewriter(电传打字机)。在 Unix 的早期,连接到计算机的用户终端就是机电的电传机或电传打字机(简称 tty)。从那时起,TTY 这个名称继续用于纯文本控制台。如今,所有文...

weixin_31107269的博客 5885

linux的tty模式怎么用,Linux下的tty的使用

1.查看机器目前所有的在运行的TTY[root@localhost ~]# w05:49:15 up 23 min, 3 users, load average: 0.00, 0.04, 0.08USER TTY FROM LOGIN@ IDLE JCPU PCPU WHATroot tty1 ...

weixin_32401763的博客 2931

浅谈Linux tty体系,理清tty驱动层次与各种概念

虽然Linux内核是由C语言写的,但处处体现面向对象的设计思想,这对很多只会C语言的朋友来说,理解比较困难,尤其是tty体系,涉及很多混乱的概念。

闪耀大叔的博客 5202

linux tty

转自 https://www.cnblogs.com/hzl6255/p/9533327.html,很好的介绍tty的文章 1. TTY介绍 TTY(TeleType)指Linux中的一类终端(Terminal)设备, 是一种字符设备 在Linux中, tty可分为如下几类 串行端口终端(serial port terminal): 指使用计算机串行端口连接的终端设备, /dev/ttySn 伪终端(pseudo terminal): 通常是通过ssh登陆的终端, /dev/pts/* 控制终端(cont

weixin_44705391的博客 621

linux tty 教程,Linux 终端(TTY)

TTY 是 Teletype 或 Teletypewriter 的缩写,原来是指电传打字机,后来这种设备逐渐键盘和显示器取代。不管是电传打字机还是键盘显示器,都是作为计算机的终端设备存在的,所以 TTY 也泛指计算机的终端(terminal)设备。为了支持这些 TTY 设备,Linux 实现了一个叫做 TTY 的子系统。所以 TTY 既指终端,也指 Linux 的 TTY 子系统,当然 TTY 还...

weixin_35914648的博客 1201

详解Linux的交互式命令行(Shell、TTY子系统、TTY设备、TTY名字的来历、TTY设备文件、几个特殊的TTY设备文件、终端的两个含义、被作为控制台的终端)

不过伪终端不像虚拟控制台终端那样系统启动后就存在并且一直运行,伪终端则需要人为打开才行,比如在Ubuntu图形界面下搜索Terminal打开,或者通过SSH远程连接打开。每个虚拟终端提供独立的会话,你可以在每个终端上执行不同的任务。Ubuntu图形界面下搜索Terminal打开的终端就是伪终端,另外通过网络远程连接(如 SSH)得到的终端也是伪终端,所以其实目前来说这种终端是很常用的。系统的输出(例如命令结果)会通过相应的终端设备文件返回给终端仿真程序,最终显示在终端窗口中。

昊虹AI笔记 1818
上一篇: 刷题记录|Day57 ● 647. 回文子串 ● 516.最长回文子序列
下一篇: 刷题记录|Day58 ● 739. 每日温度 ● 496.下一个更大元素 I
null_one
博客等级 码龄8年 847粉丝 87原创
评论
成就一亿技术人!
拼手气红包6.0元
还能输入1000个字符
 
 条评论被折叠 查看
添加红包

请填写红包祝福语或标题

个

红包个数最小为10个

元

红包金额最低5元

当前余额3.43元 前往充值 >
需支付:10.00元
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付元
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值