终端、虚拟终端和伪终端

按照Lions的说法,远古时候存在各种串行设备,它们的物理接口与传输特性各自有异,而它们作为终端有一些代码可以抽象出来,于是形成了最早的tty层。

Unix V6的tty实现十分简洁,在Lions提供的册子里才占两三张纸,但是现在看Linux的tty相关代码实在是太庞大了。不可解的是,Unix V6时代tty层需要面对各种串行设备,而现在,串行设备只剩RS232串口了,怎么会越变越复杂?

另外,关于tty还有一些令人恼火的概念。在图形界面下输入命令的那个叫伪终端,不用图形界面则是虚拟终端,用串口作终端则直接叫终端了。它们都有什么不同?估且不论tty什么时候等同于终端了。

根据一些述古的描述,远古时代人们大概是这样用计算机的。要用电脑,首先要有一个终端机,终端机上配有键盘与打印机。终端有某种串行接口,键盘的按键信息通过串行接口传出去,打印机则在纸上打印从串行接口收到数据。串行接口连到调制解调器上,人在键盘上按下一个键,终端便将按键信息在串行线上传输,调制解调器收到信息后将其调制为可在电话线上传输的信号。信号通过电话线传到另一端的调制解调器,另一端的调制解调器再将信号解调,然后通过串行接口传给主机。

而操作系统是装在主机上的。主机只是收到串行接口的数据,做出反应,然后把結果在串行接口上输出。对于主机,需要驱动来完成这件事;对于终端,硬件连线使其具有“键盘按下出,有输入数据则打印”的性质。把调制解调器拿掉,可以直接把终端与主机通过串行接口相连,处理的流程是一样的。

这与今天的键盘显示器不是很像吗?假设终端设备升级了,打印机变成了显示屏(看起来像电子词典),然后用串行接口与主机连起来。以前的处理流程依旧不变。终端设备不需要具备运算能力,只要能将按键信息发出去,将收到信息在显示屏上显示出来即可(所以很廉价)。想像一下,用串口将开发板与PC机相连,PC机不正是作为这样的终端机来用吗?只不过PC机没有设计成终端的样子(不是专用的终端设备),需要操作系统和驱动来实现终端机的功能(虽然其硬件之强大远过于终端机)。更进一步,我们使用的PC机不也是这样吗?只不是把终端机给拆了,输入输出用的两种不同的物理设备(及协议)。

对操作系统而言,这些都没有区别。键盘加打印机的终端机也好,键盘加显示屏的终端机也好,键盘加显示器的“终端机”(叫终端设备组合更合适?)也好,它们与主机间可能有不同的物理接口,协议接口(甚至输入输出设备的物理与协议接口都不同),但是上层处理的逻辑是一样。再进一步,只要有输入输出接口而且用来与系统交互的设备,上层处理的逻辑都是如此。

而这些抽象出来的逻辑,大概就是tty层吧。拥有输入输出属性本是很平常的一件事,然而专门作为人机交互设备,它们倒有了专用的抽象层。




  • 0
    点赞
  • 4
    收藏
    觉得还不错? 一键收藏
  • 1
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值