时间:2023-02-10来源:系统屋作者:zhijie
三、 创建一个目录的过程
前面说了创建一个文件的大概过程,也了解文件内容、属性以及入口的保存方式,那么创建一个目录时又是怎么回事呢?
我现在test目录使用命令mkdir 新增一个子目录child:
从用户的角度看,目录child是目录test的一个子目录,那么在系统中这层关系是怎么实现的呢?实际上test目录包含一个指向子目录child的i-节点的链接,原理跟普通文件一样,因为目录也是文件。目录在系统中的保存方式和结构大概如下:
目录其实也是文件,只是它的内容比较特殊。所以它的创建过程和文件创建过程一样,只是第二步写的内容不同。
1) 系统找到空闲的i-节点号887220,写入目录的属性
2) 找到空闲的数据块1002来存储目录的内容,只是目录的内容比较特殊,包含文件名字列表,列表一般包含两个部分:i-节点号和文件名,这个列表其实也就是文件的入口,新建的目录至少包含三个目录”。”和”。。”其中”。”指向自己,”。。”指向上级目录,我们可以通过比较对应的i-节点号来验证,887270 对应着上级目录中的child对应的i-节点号
3) 记录分配情况。这个和创建文件完全不样
4) 添加目录的入口到父目录,即在父目录中的child入口。
一般都说文件存放在某个目录中,其实目录中存入的只是文件在i-节点表的入口,而文件的内容则存储在数据区。图3中,我们一般会说“文件userlist在目录test中”,其实这意味着目录test中有一个指向i-节点921130的链接,这个链接所附加的文件名为userlist,这也可以这样理解:目录包含的是文件的引用,每个引用被称为链接。文件的内容存储在数据块。文件的属性被记录在一个被称为i-节点的结构中。I-节点的编号和文件名关联起来存在目录中。
注意:其中“。”表示是当前目录。而“。。”是当前目录的父目录。但也有特殊情况:如我们查看根目录/的情况:
发现“。”和“。。”都指向i-节点2。实际上当我们用mkfs创建一个文件系统时,mkfs都会将根目录的父目录指向自己。所以根目录下。和。。指向同一个i-节点也不奇怪了。
2023-02-10
Linux系统下火狐浏览器页面出现乱码怎么办?2023-02-10
Linux系统Vim如何安装YouCompleteMe插件2023-02-10
Linux系统下怎么升级OpenSSH?Linux系统下对日志的操作主要有转储、邮件和压缩等,如果手动操作的话会很麻烦。不过有一些工具可以帮助用户对日志进行处理。本文就来教大家Linux系统中用logrotate对Tomcat日志进行切割的教程。...
2023-02-10
Linux命令smbclient主要是用来存储和读取服务器上的用户端程序,并对这些程序进行解析和记录。本文就来具体介绍一下Linux系统smbclient命令的使用方法。...
2023-02-10