【lesson41】理解文件系统(2)

文章目录

理解文件系统

我们之前学过,一个文件可以有多个datablock块,但是如果这个文件太大了怎么办?datablock中,不是所有的datablock只能存文件数据,也可以存其它块的块号
在这里插入图片描述
inode Vs 文件名
找到文件的流程:知道inode编号->分区特定的块组->inode table块->属性和内容

那么我们怎么知道inode编号呢?
Linux中,inode属性里,没文件名的说法

预备知识:
1.一个目录下,可以保存很多文件,但是这些文件没有重复的文件名

2.目录时文件吗?
是->有自己的inode和datablock块。
而datablock块中存:文件和inode编号的映射关系。他们互为key值。
进入目录:必须有x权限
创建文件:必须有w权限
显示文件名与属性:必须有r权限
这些都是因为目录有自己的datablock块,所以要对datablock进行r\w,必须要有对应的r\w权限
inode编号是依托与目录结构

三个问题:
1.创建文件,系统做了什么
a.首先我们肯定是在目录下创建文件的。
b.其次OS根据文件系统,找到目录所对应的分区。
c.然后找到块组中的inode Bitemap找到第一个为0的比特位,将0置1后返回该比特位的位置下标的大小就是inode号。
d.再根据inode号找到inode table对该文件的信息进行初始化
e.之后再用Block Bitmap,找到对应空闲的block块号
f.再用block块号,找到空闲的block块,然后写入文件和inode的映射关系
在这里插入图片描述

2.删除文件,系统做了什么
a.根据文件名,找到inode
b.根据inode,将对应的inode Bitmap置为0
c.再将根据data block块号的BlockBitmap置为0
d.删除文件名和inode的映射关系
这样就删除了,不用清空数据,之后覆盖即可。
所以我们就可以理解文件恢复,就是根据之前的inode编号,找到对应的inode table然后恢复数据data block块。
恢复数据的前提:inode编号,没有被再次使用,inode table和data block内容没有被覆盖。

3.查看文件系统做了什么
a.根据文件名,找到inode
b.根据inode找到对应的datablock table
c.然后再显示datablock table的内容即可

软硬链接:
软:

ln -s testLink1.txt soft.link

硬:

ln testLink2.txt hard.link

创建软硬链接的过程
在这里插入图片描述
我们再根据信息看一下软硬链接的区别
在这里插入图片描述
我们看到软硬链接的本质区别:软链接有自己的inode,硬链接没有
软链接有自己独立的inode—>所以软链接是一个独立的文件
硬链接没有独立的inode---->所以硬链接不是一个独立的文件

软链接相当于Windows下的快捷键。

软链接特性:软链接的文件内容,是指向文件对应的路径
在这里插入图片描述
硬链接:
创建硬链接不是真正创建文件----->那么创建硬链接做了什么?---->就是在指定目录下,建立了文件名和指定的inode映射联系,仅此而已

属性中有个数字就是硬链接数
在这里插入图片描述
我们看一下如果删掉testLink2.txt会怎么样
在这里插入图片描述
发现硬链接数变成1.
用图帮助理解
在这里插入图片描述
当我们删除一个文件的时候,并不是立即将该文件inode删除,而是将这个文件的引用计数count–。
当引用计数count=0的时候,这个文件和文件inode才应该被删除。
引用计数count=0,表示没有文件和他关联了---->没有用户关系这个文件了!

测试以上思路,创建多个硬链接
在这里插入图片描述
我们发现确实如此

语法删除软硬链接
软链接

unlink + 文件名

在这里插入图片描述
硬链接

unlink + 文件名

在这里插入图片描述
我们创建一个目录,发现目录的引用计数是2,为什么?

在这里插入图片描述
1.首先目录本身会建立和inode的映射关系
在这里插入图片描述

2.其次目录里面的 . 文件也会建立和inode的映射关系
在这里插入图片描述
我们在test目录下再建文件夹会发现引用计数变成3
在这里插入图片描述
这是因为d1中的 … 也和test的inode建立了映射关系
在这里插入图片描述

acm
下面解释一下文件的三个时间:

  1. Access 最后访问时间
  2. Modify 文件内容最后修改时间
  3. Change 属性最后修改时间
  • 28
    点赞
  • 29
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

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

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值