终端设备:名词解释

文章目录

  • 终端历史
    • 1、终端之初
    • 2、图形终端
      • 2.1 图形字符终端
      • 2.2 图形终端
    • 3、伪终端设备
      • 3.1 终端模拟器
      • 3.2、网络终端
    • 4、其它概念

终端历史

计算机设备总需要输入设备,输出设备:
输入设备用于控制计算机;输出设备用于计算机输出结果

1、终端之初

早期计算机终端是一种独立的硬件设备,终端和计算机之间使用双工或者半双工方式通信
笔者可以想象的一种场景是:在一个实验室中只有一台计算机,这台计算机背板上有好多好多的插口,每一个插口通过独立的线缆连接到一个一个的小盒子上,每个小盒子前坐着一位同学,在着急的调试自己的程序…

注:
上世纪70 年代计算机价格十分昂贵,压根没有个人计算机(买不起),这时候一台计算机往往为企业机构所有。
一台计算机提供多人使用,通过不同的线缆登录到一台计算机上去(多用户)

终端设备:名词解释_第1张图片典型的:
如果中心计算机使用串口线缆链接,计算机内部可能使用设备文件名
/dev/ttyS1 /dev/ttyS2 … 表示每一个登录端口。

备注:
笔者在研发工作中,TI DM8148开发板支持串口登录…(设备文件:/dev/ttyS2 用户名:root,密码:无)

2、图形终端

背景:
当个人计算机出现后(也很昂贵),丰厚的利润引来计算机厂商之间的激烈竞争。当时计算机使用起来比较有难度,用户需要懂命令行!!!

第一个吃螃蟹的人:
苹果公司独树一帜率先在个人计算机领域使用图形终端,极大的简化了个人计算机的使用难度
这个时候的图形终端由输出设备显示器输入设备鼠标/键盘构

值得一提的是那时候的显示器控制卡可能支持两种模式:一种是字符模式,一种是窗口模式。字符模式向前兼容了命令行使用方式,窗口模式使用像素的方法表示图像

2.1 图形字符终端

注意:
图形终端是在个人计算机为背景下出现的应用
一台计算机可能接入了多个键盘,多个显示器。但对于计算机来说,所有的这些输入输出设备只是一个逻辑图形终端硬件
终端设备:名词解释_第2张图片
计算机内部使用/dev/tty1 /dev/tty2 /dev/tty3 …表示图形终端设备。每一个tty设备都可以支持用户登录!

举例一个登录情况:
在/dev/tty1上:用户 jianleya 密码:aaaaaa
在/dev/tty2上:用户 james 密码:abcdef
在/dev/tty4上:用户 james 密码:abcdef
在/dev/tty3上:用户 root 密码:*******

任意时刻只有一个tty设备的输出会被输出到显示器上,接收键盘的输入
用户可以通过Alt + [F1~F6]切换到 tty1 ~ tty6

这里有一个疑问:既然是个人计算机,而且同一时刻显示器只显示一个tty设备,为什么又提供多用户来登录呢?

笔者认为这一发问十分合理。确实,大多数个人计算机用户几乎不使用tty设备切换这一功能(甚至于不知道,也没有需求)
不过考虑到在同一个人可能同时扮演多个社会角色,在这种复杂的社会角色扮演下,个人计算机用来进行多用户登录可能是有益的!

2.2 图形终端

现代计算机的图形用户界面使用了一种叫做窗口系统的技术!窗口系统用来处理显示器的输出数据,以及键盘,鼠标的输入数据

窗口系统建立在/dev/ttyNum之上,比如
在我的ubuntu操作系统上:alt + ctl + F[Num]切换终端设备
/dev/tty1 ~ /dev/tty6 用来进行字符终端登录
/dev/tty7 用来展示了图形界面(一个完整的窗口系统,类似于win7)

3、伪终端设备

可能出现如下的软件需求:进程A和进程B数据交换
进程A输出数据递送给进程B
进程B输出数据递送给进程A
进程A/B各自可以读取来自对方的数据,如果没有数据,进程A/B休眠…
终端设备:名词解释_第3张图片
上图中的接口就是虚拟终端,终端设备成对存在。主/从设备构成一对,下图显示了ubuntu系统上的主设备
在这里插入图片描述

3.1 终端模拟器

下图为终端模拟器:
终端设备:名词解释_第4张图片
下图展示了终端模拟器原理:
终端模拟器窗口进程用来获取shell进程输出,然后显示到显示器上(使用Xorg接口)。
同时递送来自键盘的输入,给shell进程
终端设备:名词解释_第5张图片

3.2、网络终端

网络登录支持很多种协议,telnet协议,ssh协议等等…OSI协议栈中的应用层协议

  • 客户机和服务器 通过协议进行数据交换
  • 客户机模拟一个终端窗口:解析从服务器得到的网络报文并把字符显示到图形窗口中;另一方面把图形窗口的输入封装成网络报文发送给服务器
  • 服务器端:解析接收到的报文,并把数据写入主虚拟终端;另一方面,获取来自虚拟终端的输入,封装成网络报文发送给客户端

终端设备:名词解释_第6张图片说明:
inetd进程,顶层telnet服务进程
telnetd进程,负责读写伪终端以及网络报文转换(telnet进程同时会fork一个子进程login)
login程序将占用伪终端设备与shell进程进行数据交换

4、其它概念

1、/dev/tty0
任意时刻,计算机显示器会工作在[tty1 tty2 tty3 tty4 …ttyN]当中的一个,tty0 表示正在使用的那一个
注意:只有超级用户才能够对tty0执行写操作
2、/dev/tty
表示当前进程占用的控制终端(可能是一个显示器控制终端,也可能是伪终端)
3、/dev/console
控制台的意思,一般而言这是一个内核指针,内核printk函数会把日志记录到console上,console指向的设备将作为输出设备(比如ttyS1,ttyS2, tty1, tty2…)

你可能感兴趣的:(UNIX/LINUX,C)