tty

本文介绍了Linux系统中的三种终端设备:串行端口终端、伪终端和控制台终端,并详细解释了它们的工作原理及应用场景。

tty:

1、概述

tty ->teletype电传打字机,现在是各种类型终端的简称。Linux中包含控制台、串口和伪终端3类终端设备。

 

23类终端设备

串行端口终端(/dev/ttySn 
   串行端口终端(Serial Port Terminal)是使用计算机串行端口连接的终端设备。计算机把每个串行端口都看作是一个字符设备。在命令行上把标准输出重定向到端口对应的设备文件名上就可以通过该端口发送数据,例如,在命令行提示符下键入: echo test > /dev/ttyS1会把单词“test”发送到连接在ttyS1端口的设备上。 

伪终端(/dev/pty/ 

伪终端设备是一种特殊的终端驱动设备它并不驱动某个物理设备而是用来将终端的输出定向到应用程序中进行处理伪终端设备由主-从两个成对的设备构成当打开主设备(pty)对应的从设备(ttyp)随之打开形成连接状态输入到主设备数据成为从设备的输出输入到从设备的数据成为主设备的输出形成双向管道伪终端设备常用于远程登录服务器来建立网络和终端的关联当通过telnet远程登录到另一台主机时, telnet进程与远程主机的telnet服务器相连接. telnet服务器使用某个pty主设备并通过对应的ttyp从设备与你在远程主机上所运行的程序相互通信.

控制台终端(/dev/ttyn, /dev/console

如果当前进程有控制终端(Controlling Terminal)的话,那么/dev/tty就是当前进程的控制终端的设备特殊文件。在UNIX系统中,计算机显示器通常被称为控制台终端(Console)。它仿真了类型为Linux的一种终端,并且有一些设备特殊文件与之相关联:tty0tty1tty2等。当用户在控制台上登录时,使用的是tty1。使用Alt+[F1—F6]组合键时,我们就可以切换到tty2tty3等上面去。tty1–tty6等称为虚拟终端,而tty0则是当前所使用虚拟终端的一个别名,系统所产生的信息会发送到该终端上。因此不管当前正在使用哪个虚拟终端,系统信息都会发送到控制台终端上。用户可以登录到不同的虚拟终端上去,因而可以让系统同时有几个不同的会话期存在。只有系统或超级用户root可以向/dev/tty0进行写操作。


3有关控制台终端的简单实现

这里只讨论非常简单的键盘输入、屏幕输出以及多控制台切换的处理。

键盘输入:

敲击键盘会产生扫描码(scan code),它分为Make  Code Break  Code。在键盘中存在键盘编码器8048,作用是监视键盘输入,并把适当的数据传送给计算机。在计算机主板上有键盘控制器,用来接收和解码来自键盘的数据,并与8259A以及软件等进行通信。编程实现tty时只需根据接收到的扫描码,进行相应的处理即可,如:输出,切换终端。

屏幕输出:

显存起始地址为0xB8000。每2个字节代表一个字符,其中低字节表示字符的ASCII码,高字节表示字符的属性。通过端口操作即可以让系统显示指定位置的内容、滚屏等

 

 

11-20
### TTY 相关信息 TTY 是 Teletype 的缩写,最早是由 Teletype 公司生产的一种类似电传打字机的终端设备,现在通常用来简称各种类型的终端设备,是一种字符型设备[^1]。 在 Linux 系统中,TTY 有多种类型,如虚拟终端和控制台终端等。tty1 - tty6 被称为虚拟终端,使用 Alt + [F1 - F6] 组合键可以在这些虚拟终端之间进行切换;tty0 是当前所使用虚拟终端的一个别名,系统产生的信息会发送到该终端上,不管当前正在使用哪个虚拟终端,系统信息都会发送到控制台终端上,用户可以登录到不同的虚拟终端,让系统同时存在几个不同的会话期,且只有系统或超级用户 root 可以向特定的虚拟终端进行操作[^2]。 ### TTY 与 pts/0 的关联 pts(pseudo - terminal slave)是 pty 的实现方法,与 ptmx(pseudo - terminal master)配合使用实现 pty。早期 Unix 使用固定伪终端(如 /dev/ptyp0 和 /dev/ttyp0),数量有限,Unix98 引入 /dev/ptmx 和 /dev/pts/*,实现动态分配,现代 Linux 普遍采用此标准。pts/0 是伪终端的一种具体实例,当打开一个新的终端窗口时,可能就会分配到 pts/0 这样的伪终端设备。 TTY 是对各种终端设备的统称,而 pts/0 属于伪终端设备,是 TTY 所涵盖的众多终端设备类型中的一种。可以把 TTY 看作是一个大的概念范畴,而 pts/0 是这个范畴下的一个具体对象,它们是包含与被包含的关系。例如,使用 `who` 命令查询当前登录的用户时,能看到每个用户的 TTY 设备,若显示“calabash pts/0 2009 - 12 - 09 20:20 (:0.0)”,这表明当前打开的终端窗口对应的就是 pts/0 这个伪终端设备,它也是 TTY 设备的一种具体体现。 ### TTY 的工作原理 TTY 设备的工作原理涉及到内核、驱动程序和用户空间程序之间的交互。从用户输入角度来看,当用户在终端设备(如键盘)上输入字符时,这些字符会通过硬件接口传输到内核的 TTY 驱动程序。TTY 驱动程序会对输入的字符进行处理,例如进行字符的缓冲、特殊字符(如 Ctrl + C 等控制字符)的识别和处理等。处理后的字符会被传递给用户空间的应用程序,应用程序根据接收到的字符执行相应的操作。 从输出角度来看,当应用程序需要向终端输出信息时,它会将信息发送给内核的 TTY 驱动程序。TTY 驱动程序会对输出信息进行格式化处理,例如处理换行符、制表符等,然后将处理后的信息通过硬件接口发送到终端设备(如显示器)上显示给用户。 ### TTY 在系统中的作用 - **用户交互**:TTY 为用户提供了与计算机系统进行交互的界面,用户可以通过键盘输入命令,计算机将执行结果通过显示器输出给用户。无论是在图形界面下打开的终端窗口(如 pts/0 这样的伪终端),还是在纯字符界面的虚拟终端tty1 - tty6),都是用户与系统交互的重要途径。 - **系统管理**:系统管理员可以通过 TTY 设备进行系统的管理和维护工作,如安装软件、配置系统参数、查看系统日志等。在系统出现故障或图形界面无法正常工作时,通过虚拟终端(如 tty1)可以进行紧急的系统修复和故障排查。 - **多用户和多会话支持**:TTY 支持多用户同时登录和多会话操作。不同的用户可以登录到不同的虚拟终端或伪终端上,各自进行独立的操作,互不干扰,提高了系统的使用效率和资源利用率。 ### 代码示例 可以使用以下命令查看当前系统中所有的 TTY 设备: ```bash ls /dev/tty* ``` 使用以下命令查看当前登录用户的 TTY 设备信息: ```bash who ```
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值