tty是Teletype的缩写(转)

本文介绍了TTY作为终端设备的概念及其不同类型,包括串行端口终端、伪终端、控制终端、控制台终端和其他终端设备。详细解释了每种终端的工作原理及应用场景。

tty是Teletype的缩写(转)
终端是一种字符型设备,它有多种类型,通常使用tty来简称各种类型的终端设备。tty是Teletype的缩写。Teletype是最早出现的一种终端设备,很象电传打字机(或者说就是),是由Teletype公司生产的。设备名放在特殊文件目录/dev/下,终端特殊设备文件一般有以下几种:
1.串行端口终端(/dev/ttySn)
串行端口终端(Serial Port Terminal)是使用计算机串行端口连接的终端设备。计算机把每个串行端口都看作是一个字符设备。有段时间这些串行端口设备通常被称为终端设备,因为那时它的最大用途就是用来连接终端。这些串行端口所对应的设备名称是/dev/tts/0(或/dev/ttyS0)、/dev/tts/1(或/dev/ttyS1)等,设备号分别是(4,0)、(4,1)等,分别对应于DOS系统下的COM1、COM2等。若要向一个端口发送数据,可以在命令行上把标准输出重定向到这些特殊文件名上即可。例如,在命令行提示符下键入:echo test > /dev/ttyS1会把单词”test”发送到连接在ttyS1(COM2)端口的设备上。
2.伪终端(/dev/pty/)
伪终端(Pseudo Terminal)是成对的逻辑终端设备,例如/dev/ptyp3和/dev/ttyp3(或着在设备文件系统中分别是/dev/pty/m3和/dev/pty/s3)。它们与实际物理设备并不直接相关。如果一个程序把ttyp3看作是一个串行端口设备,则它对该端口的读/写操作会反映在该逻辑终端设备对的另一个上面(ttyp3)。而ttyp3则是另一个程序用于读写操作的逻辑设备。这样,两个程序就可以通过这种逻辑设备进行互相交流,而其中一个使用ttyp3的程序则认为自己正在与一个串行端口进行通信。这很象是逻辑设备对之间的管道操作。
对于ttyp3(s3),任何设计成使用一个串行端口设备的程序都可以使用该逻辑设备。但对于使用ptyp3的程序,则需要专门设计来使用ptyp3(m3)逻辑设备。
例如,如果某人在网上使用telnet程序连接到你的计算机上,则telnet程序就可能会开始连接到设备ptyp2(m2)上(一个伪终端端口上)。此时一个getty程序就应该运行在对应的ttyp2(s2)端口上。当telnet从远端获取了一个字符时,该字符就会通过m2、s2传递给getty程序,而getty程序就会通过s2、m2和telnet程序往网络上返回”login:”字符串信息。这样,登录程序与telnet程序就通过“伪终端”进行通信。通过使用适当的软件,就可以把两个甚至多个伪终端设备连接到同一个物理串行端口上。
在使用设备文件系统(device filesystem)之前,为了得到大量的伪终端设备特殊文件,HP-UX AIX等使用了比较复杂的文件名命名方式。
3.控制终端(/dev/tty)
如果当前进程有控制终端(Controlling Terminal)的话,那么/dev/tty就是当前进程的控制终端的设备特殊文件。可以使用命令”ps –ax”来查看进程与哪个控制终端相连。对于你登录的shell,/dev/tty就是你使用的终端,设备号是(5,0)。使用命令”tty”可以查看它具体对应哪个实际终端设备。/dev/tty有些类似于到实际所使用终端设备的一个联接。
4.控制台终端(/dev/ttyn, /dev/console)
在UNIX系统中,计算机显示器通常被称为控制台终端(Console)。它仿真了类型为Linux的一种终端(TERM=Linux),并且有一些设备特殊文件与之相关联:tty0、tty1、tty2等。当你在控制台上登录时,使用的是tty1。使用Alt+[F1—F6]组合键时,我们就可以切换到tty2、tty3等上面去。tty1 –tty6等称为虚拟终端,而tty0则是当前所使用虚拟终端的一个别名,系统所产生的信息会发送到该终端上。因此不管当前正在使用哪个虚拟终端,系统信息都会发送到控制台终端上。
你可以登录到不同的虚拟终端上去,因而可以让系统同时有几个不同的会话期存在。只有系统或超级用户root可以向/dev/tty0进行写操作,
5.其它类型
还针对很多不同的字符设备存在有很多其它种类的终端设备特殊文件。例如针对ISDN设备的/dev/ttyIn终端设备等。这里不再赘述。

<think>首先,用户的问题是:“我想了解TTY的含义 请问TTY的含义”。这基于之前的上下文,包括系统指令和用户可见层的要求。 回顾系统指令: - 所有行内数学表达式必须使用 `$...$` 格式。 - 独立公式必须使用 `$$...$$` 格式并单独成段。 - LaTeX语法正确。 - 使用中文回答。 - 生成相关问题。 - 回答中引用的段落末尾自然地添加引用标识,例如: [^1] 用户可见层的指令: - 回答结构清晰,帮助用户逐步解决问题。 - 尽量保证回答真实可靠。 用户提供了参考引用:[1],内容是关于TTY设备的底层设备和串口的关系,特别提到如果关闭行规程层的功能,非Shell应用可以直接使用串口。这与用户的问题“TTY的含义”相关,但用户明确说“上述引用仅供参考,并不是用户真正的需求”,所以我应该专注于用户的问题:解释TTY的含义。 关键点:TTYTeletype缩写,指的是终端设备的历史术语。在计算机系统中,TTY代表一种虚拟终端或控制台,用于用户与系统交互。 我需要构建一个结构清晰的回答: 1. **解释TTY的含义**:开始给出TTY的定义和起源。 2. **逐步详细说明**:解释TTY在操作系统中的作用,包括历史背景、现代用法和关键组件。 3. **引用提供的引用**:用户提到了引用[1],所以我应该自然地融入它。引用[1]讨论了TTY框架底层是串口的情况,强调行规程层的作用。这可以作为TTY功能的一部分来提及。 4. **确保真实性**:基于我的知识,TTY源于Teletypewriter,是早期打字机式终端;在现代Unix-like系统中,它是虚拟终端设备。 5. **生成相关问题**:在回答末尾,添加相关问题,就像示例中那样。 结构化回答: - **引言**:直接回答什么是TTY。 - **历史背景**:简要说明TTY的起源。 - **现代用法**:解释在Linux和其他系统中的TTY设备。 - **关键概念**:提及用户提供的引用,如行规程层(line discipline)。 - **示例或扩展**:如果需要,但保持简洁。 - **相关问题**:在最后添加几个相关问题。 生成相关问题: - 基于主题,如TTY的工作原理、如何配置、常见问题等。 - 示例相关问题: 1. TTYLinux系统中是如何实现的? 2. 如何配置TTY设备? 3. TTY和PTS(伪终端从端)有什么区别? 使用中文回答:整个回答用中文写。 引用标识:在回答中提到的引用处添加[^1]。例如,当讨论行规程层时,可以引用[^1]。 回答大纲: 1. **开头**:TTYTeletype缩写,最初指的是电传打字机。 2. **含义**:在计算领域中,TTY代表终端设备,用于用户输入和输出。 3. **详细解释**: - 历史:由Teletype Corporation开发。 - 现代:在系统中,TTY设备文件(如/dev/tty)处理终端I/O。 - 框架:包括硬件层、行规程层(用于处理字符输入,如退格键)、和用户空间接口。 4. **提及引用**:根据引用[1],TTY框架底层可以是串口,关闭行规程层允许非Shell应用直接使用串口[^1],但这通常用于特定场景。 5. **总结**:TTY终端交互的核心。 6. **相关问题**:列出2-3个相关问题。 确保回答简洁、信息丰富。 </think>### TTY的含义 TTY是**Teletype**的缩写,源自英文“Teletypewriter”的简称,中文译为“电传打字机”。在计算领域中,TTY指的是**终端设备**(Terminal Device),用于用户与计算机系统进行交互的输入/输出接口。以下是基于历史和系统层面的逐步解释,帮助您全面理解: 1. **历史起源(20世纪初)**: - TTY最初是一种物理设备,由Teletype Corporation在1920年代开发,用于电报和早期计算机通信。它类似于打字机,通过串行线路(如RS-232)连接到主机,用户可以通过键盘输入命令并接收打印输出。 - 例如,在Unix系统的早期版本中,TTY设备实现了多用户终端功能,允许多个用户通过独立终端访问同一台主机。 2. **现代计算中的含义(操作系统层面)**: - 在Unix-like系统(如Linux)中,TTY已演变为**虚拟终端**的概念。它不再局限于物理设备,而是通过软件模拟的终端接口,处理用户输入(键盘)和输出(显示器)。 - TTY框架的核心是**设备文件**(如`/dev/ttyS0`或`/dev/tty1`),这些文件通过系统内核的TTY子系统管理数据流。框架包括多个层: - **硬件层**:底层连接到物理设备(如串口、控制台或USB)。 - **行规程层(Line Discipline)**:处理输入数据的缓冲和编辑功能,例如将退格键(Backspace)解释为删除字符,或将回车键映射为换行符。这层使TTY行为更 “用户友好”,类似于Shell的交互体验。如果禁用行规程层,非Shell应用可以直接访问底层设备(如串口),实现更原始的字节流传输[^1]。 - **用户空间接口**:应用程序通过设备文件与TTY交互,例如`printf()`输出到终端或`scanf()`读取输入。 - TTY设备文件名的“tty”字样正源于此历史术语,用于标识终端设备。 3. **关键作用与应用场景**: - TTY提供了系统级的终端仿真,支持登录会话、Shell命令执行和后台任务管理。例如,在Linux中,通过`Ctrl+Alt+F1`切换到TTY控制台。 - 它与伪终端(PTY)有所区别:PTY用于图形界面(如xterm或SSH会话),而TTY更多指向底层硬件或虚拟控制台。 - 在嵌入式系统和串口通信中,TTY框架的底层可能连接到串口设备,允许开发串行通信工具[^1]。 总之,TTY的本质是**连接用户与系统的字符型终端接口**,它从物理设备演化到软件抽象,是现代操作系统交互的核心组件。如果您对具体实现或配置感兴趣,可以参考相关文档或实验示例(如引用[^1]中的博文)。
评论
成就一亿技术人!
拼手气红包6.0元
还能输入1000个字符
 
红包 添加红包
表情包 插入表情
 条评论被折叠 查看
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值