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

news2024/11/17 9:56:01

文章目录

  • 理解文件系统

理解文件系统

我们之前学过,一个文件可以有多个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 属性最后修改时间

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.coloradmin.cn/o/1435652.html

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈,一经查实,立即删除!

相关文章

MySQL数据库③_MySQL数据类型和测试

目录 1. MySQL数据类型分类 1.1 类型汇总 1.2 整数类型 1.3 浮点数类型和定点数类型 1.4 字符串类型和文本类型 1.5 日期与时间类型 1.6 二进制类型 2. 有代表的类型测试 2.1 tinyint类型 2.2 bit类型 2.3 float类型 2.4 decimal类型 2.5 char和varchar类型 2.6 …

Vue3快速上手(一)使用vite创建项目

一、准备 在此之前,你的电脑,需要安装node.js,我这边v18.19.0 wangdymb 2024code % node -v v18.19.0二、创建 执行npm create vuelatest命令即可使用vite创建vue3项目 有的同学可能卡主不动,可能是npm的registry设置的问题 先看下&#x…

为后端做准备

这里写目录标题 flask 文件上传与接收flask应答(接收请求(文件、数据)flask请求(上传文件)传递参数和文件 argparse 不从命令行调用参数1、设置default值2、"从命令行传入的参数".split()3、[--input,内容] …

备战蓝桥杯---数据结构与STL应用(进阶2)

本文将主要围绕有关map的今典应用展开&#xff1a; 下面我用图进行分析&#xff1a; 下面为AC代码&#xff1a; #include<bits/stdc.h> using namespace std; struct Point {int x,y;bool operator < (const Point & r) const {return x < r.x || ( x r.x &a…

【Java八股面试系列】JVM-垃圾回收

目录 垃圾回收 堆空间的基本结构 内存分配和回收原则 分代收集机制 Minor GC 流程 空间分配担保 老年代 大对象直接进入老年代 长期存活的对象将进入老年代 GC的区域 对象存活判定算法 引用计数法 可达性分析算法 finalize() 字符串常量判活 类判活 垃圾回收算…

智能优化算法 | Matlab实现合作优化算法(CSA)(内含完整源码)

文章目录 效果一览文章概述源码设计参考资料效果一览 文章概述 智能优化算法 | Matlab实现合作优化算法(CSA)(内含完整源码) 源码设计 clear clc close SearchAgents_no=30; % Number of search agents Max_iteration=1000;

宠物空气净化器哪个品牌质量好?实惠的猫用猫用净化器牌子测评

作为宠物主人&#xff0c;我们深知养宠物的乐趣和责任&#xff0c;但同时也面临着一些挑战&#xff0c;比如宠物脱毛、气味和室内空气质量等问题。正因如此&#xff0c;越来越多的家庭选择宠物空气净化器&#xff0c;为我们营造一个清新、健康的居住环境。 无论我们多么喜欢我…

新零售的升维体验,摸索华为云GaussDB如何实现数据赋能

新零售商业模式 商业模式通常是由客户价值、企业资源和能力、盈利方式三个方面构成。其最主要的用途是为实现客户价值最大化。 商业模式通过把能使企业运行的内外各要素整合起来&#xff0c;从而形成一个完整的、高效率的、具有独特核心竞争力的运行系统&#xff0c;并通过最…

防范恶意勒索攻击!亚信安全发布《勒索家族和勒索事件监控报告》

本周态势快速感知 本周全球共监测到勒索事件81起&#xff0c;事件数量有所下降&#xff0c;比上月降低20%。 lockbit3.0仍然是影响最严重的勒索家族&#xff1b;akira和incransom也是两个活动频繁的恶意家族&#xff0c;需要注意防范。 本周alphv勒索组织窃取MBC法律专业公司…

车载测试中:如何处理 bug

一&#xff1a;Jira 提交 bug 包含那些内容 二&#xff1a;如何处理现上 bug 三&#xff1a;车载相关的 bug 如何定位 四&#xff1a;遇到 bug &#xff0c;复现不出来怎么办 五&#xff1a;bug 的处理流程 一&#xff1a;Jira 提交 bug 包含那些内容二&#xff1a;如何处理现上…

C#用Array类的FindAll方法和List<T>类的Add方法按关键词在数组中检索元素并输出

目录 一、使用的方法 1. Array.FindAll(T[], Predicate) 方法 &#xff08;1&#xff09;定义 &#xff08;2&#xff09;示例 2.List类的常用方法 &#xff08;1&#xff09;List.Add(T) 方法 &#xff08;2&#xff09;List.RemoveAt(Int32) 方法 &#xff08;3&…

基于若依的ruoyi-nbcio流程管理系统自定义业务实现一种简单的动态任务标题(续)

更多ruoyi-nbcio功能请看演示系统 gitee源代码地址 前后端代码&#xff1a; https://gitee.com/nbacheng/ruoyi-nbcio 演示地址&#xff1a;RuoYi-Nbcio后台管理系统 更多nbcio-boot功能请看演示系统 gitee源代码地址 后端代码&#xff1a; https://gitee.com/nbacheng/n…

Msql-数据库死锁

实验案例 CREATE TABLE t1_deadlock ( id int(11) NOT NULL, name varchar(100) DEFAULT NULL, age int(11) NOT NULL, address varchar(255) DEFAULT NULL, PRIMARY KEY (id), KEY idx_age (age) USING BTREE, KEY idx_name (name) USING BTREE ) ENGINEInnoDB DEFAULT CHARS…

Kafka SASL_SSL双重认证

文章目录 1. 背景2. 环境3. 操作步骤3.1 生成SSL证书3.2 配置zookeeper认证3.3 配置kafka安全认证3.4 使用kafka客户端进行验证3.5 使用Java端代码进行认证 1. 背景 kafka提供了多种安全认证机制&#xff0c;主要分为SASL和SSL两大类。 SASL&#xff1a; 是一种身份验证机制&…

SRS视频服务器使用记录

SRS是一个开源的&#xff08;MIT协议&#xff09;简单高效的实时视频服务器&#xff0c;支持RTMP、WebRTC、HLS、HTTP-FLV、SRT、MPEG-DASH和GB28181等协议。 SRS媒体服务器和FFmpeg、OBS、VLC、 WebRTC等客户端配合使用&#xff0c;提供流的接收和分发的能力&#xff0c;是一个…

鸿蒙开发系列教程(十二)--布局应用:Flex布局

相关属性参数与css3的flex布局参数相似 排列方向&#xff1a;direction: FlexDirection.Row, 换行&#xff1a;wrap: FlexWrap.NoWrap, 水平垂直对齐方式&#xff1a; justifyContent: FlexAlign. SpaceBetween, alignItems: ItemAlign.Center Entry Component struct Flex…

【开源】SpringBoot框架开发高校学生管理系统

目录 一、摘要1.1 项目介绍1.2 项目录屏 二、功能模块2.1 学生管理模块2.2 学院课程模块2.3 学生选课模块2.4 成绩管理模块 三、系统设计3.1 用例设计3.2 数据库设计3.2.1 学生表3.2.2 学院课程表3.2.3 学生选课表3.2.4 学生成绩表 四、系统展示五、核心代码5.1 查询课程5.2 新…

目标检测:3采用YOLOv8 API训练自己的模型

​ 目录 ​1.YOLOv8 的新特性 2.如何使用 YOLOv8? 3使用YOLOv8训练模型 4.验证训练集 5.测试训练集 6.测验其他图片 7 其他问题 参考: 1.YOLOv8 的新特性 Ultralytics 为 YOLO 模型发布了一个全新的存储库。它被构建为 用于训练对象检测、实例分割和图像分类模型的统…

【UE】游戏运行流程的简单理解

流程图 官方的游戏流程图&#xff1a; 一般顺序为初始化引擎、创建并初始化 GameInstance、加载关卡&#xff0c;最后开始游戏。 总的来说就是&#xff1a; 开始游戏-》游戏实例-》关卡-》游戏模式-》玩家控制器-》Pawn、玩家状态、HUD、UMG&#xff08;可有可无&#xff09; …

【力扣】Z字形变换,模拟+直接构造

Z字形变换原题地址 方法一&#xff1a;利用二维矩阵模拟 对于特殊情况&#xff0c;z字形变换后只有一行或只有一列&#xff0c;则变换后的字符串和原字符串相同。 对于一般情况&#xff0c;我们可以考虑按照题目要求&#xff0c;把字符串按照Z字形存储到二维数组中&#xff…