一、linux下tty

在早期计算机时代,小型机主机的显卡显示器和键盘就是控制台,这是人控制主机的第一人机接口;同时小型机还需要提供多个终端给多个人接入主机,终端有字符哑终端和图形终端两种,字符哑终端就是tty

回到现在的pc时代,个人计算机只有控制台,没有终端。linux为了实现tty设备,在控制台上通过getty软件虚拟了六个字符哑终端(也叫控制台终端tty1-tty6,数量可以在/etc/inittab里自己调)和一个图型终端(X-Window), 在虚拟图形终端中又可以通过软件(如rxvt)再虚拟无限多个虚拟字符哑终端(pts/0….),网络连接telnet、ssh等创建的也都是虚拟字符哑终端。当然,linux也有自己的实际tty设备,串口终端就是实际的tty设备。

原文链接:https://blog.csdn.net/qq_43923676/article/details/100945390

linux中现有的tty终端有以下类型:

控制台虚拟字符终端/dev/ttyN

Linux在控制台上模拟了6个tty字符终端,对应/dev/tty1~/dev/tty6,

ubuntu上可以使用“Ctrl+Alt + Fn”(fn=f1 – f6)组合键来进行切换。

/dev/tty0是一个特殊的设备,指向这六个终端中目前在使用的那一个。

其他虚拟字符终端/dev/pty/(伪终端)

如果我们远程telnet到主机或使用xterm时不也需要一个终端交互么?是的,这就是虚拟终端pty(pseudo-tty)

pts(pseudo-terminal slave)是pty的实现方法,与ptmx(pseudo-terminal master)配合使用实现pty。

在网络连接和图形终端中虚拟字符终端,需要成对的虚拟逻辑终端设备(即master和slave设备)

其设计的思想是,应用程序在使用虚拟字符终端时和使用实际字符终端方法是一致的,slave设备提供虚拟字符终端对应用程序接口,master设备关注实际不同方式通道的接口。

比如,我们通过ssh登陆的shell,就是一种网络连接虚拟字符终端。

二、图形界面

1、GNOME系统

三、shell

shell是用户和Linux内核之间的接口程序,作为人机交互的桥梁,其功能包括6个方面:命令解释执行、文件名及各种替换、I/O重定向、通信管道建立、系统环境设置和shell编程。

四、i节点

linux中,文件查找不是通过文件名称来查找的。实际上是通过i节点来实现文件的查找定位的。我们可以形象的将i节点看做是一个指针fip。

当文件存储到磁盘上去的时候,文件肯定会存放到一个磁盘位置上,可以这样想象,既然文件数据是存放在磁盘上的,如果我们知道这个文件数据的地址,当我们想要读写文件的时候,我们是不是直接使用这个地址去找到文件就可以了。

linux下,i节点其实就是可以这么认为,把i节点看作是一个指向磁盘上该文件存储区的地址。只不过这个地址我们一般是没办法直接使用的,而是通过文件名来间接使用的。事实上,i节点不仅包含了文件数据存储区的地址,还包含了很多信息,比如数据大小,等等文件信息。但是i节点是不保存文件名的。文件名是保存在一个目录项中。每一个目录项中都包含了文件名和i节点。

alt

上图可以看到,目录项中包含了文件名和i节点。

上图中,目录项A和目录项B的i节点指向同一个存储区,其中这个存储区存放的是printf("ha")的数据。 也就是意味着helloA.c和helloB.c的内容是一样的。

这就引出了一个硬链接和符号链接的概念

** 硬链接**:多个文件名公用一个文件体,一个文件可以具有多个不同的名字,但它们具有相同的i节点号,对于硬链接来说。如果删掉源文件helloA.c,那么磁盘上数据文件时不会删除的。因为i节点上记录了该文件的硬链接数。只有硬链接数是0的时候,删除文件名的时候,该数据在磁盘上才会删除。

符号连接:符号连接和它所链接的对象不是同一个文件,各有自己的i节点号,但可以通过符号链接文件的内容访问被链接文件。

所谓的符号链接,符号链接其实是文件索引的索引。当源文件helloB.c删除之后,其实磁盘数据文件还在,helloC.c也无法使用。 符号链接包含了一个文件名的路径,如果这个文件名被删除,这符号链接自然就不能正常工作了。