LIUNX文件系统

目录

1.磁盘的物理结构

2.CHS定位法

3.磁盘的逻辑存储

4.系统层面

inode.block[15]

创建文件的流程

查找文件的流程


了解文件系统,首先要了解磁盘是如何存储和读取数据的。

1.磁盘的物理结构

可以理解这个盘上有很多的小磁铁,通过旋转盘面和摆动磁头,就可以访问修改这个盘上的所有的磁铁。

每个盘面上都有一个磁头,一个盘的正反面都是可以存储数据的。

整个盘面又分为不同的磁道和扇区,每个扇区存储容量相同。

扇区:是磁盘io的进本单位,通常为512字节或者4KB。

扇区不一定是系统io的基本单位。

2.CHS定位法

想要定位一个文件

首先要看该文件在哪个磁道(cylinder)

然后选择磁头(head)

最后看在那个扇区(sector)

就定位到了文件所在位置,任何文件就是多个扇区承载的数据。

3.磁盘的逻辑存储

把磁盘上所有的磁道都拉直,连接在一起,看成一个数组,这样就把对磁盘的管理,转化成了对扇区数组的管理。

要把线性地址sector = 999999转化为CHS

1.sector/单盘的容量,确定想访问的文件在哪块盘。(H)

2.sector%单盘扇区的个数 = tmp。

3.tmp/磁道个数 确定在哪个磁道。

4.sector%磁道上扇区的个数 确定在那个扇区。

4.系统层面

操作系统觉得一次io512字节太小了

os系统io的基本单位是4kb

操作系统在对这些4Kb的数据进行分区管理

在对每个区进行分组管理

最后再对每个组进行管理,管理好一个组就管理好整个文件系统了。

 

inode:LINUX的磁盘文件都是内容+属性,inode就是存储文件的属性,inode在当前分区是唯一的。

文件名不是文件的属性。

struct inode
{
  类型;
  大小;
  权限;
  acm时间;
  inode编号;
  ....
  int block[15];
}

inodeTable:他是一张存储inode的表,根据inode的编号,就可以在inodeTable中找到对应的inode。

dataBlock:datablock里面是一个一个的4KB的数据块,每个数据块都有编号,就是存放文件内容的。

inodebitmap:inode编号对应的inode是否被使用。

blockBitmap:block编号对应的块是否被使用。

GroupDescriptorTable:描述分组的信息,GroupDescriptorTable被破坏整个分组就被破坏。

superBlock:描述整个组的文件系统的,bolck 和 inode的总量, 未使用的block和inode的数量,一个block和inode的大小,最近一次挂载的时间,最近一次写入数据的 时间,最近一次检验磁盘的时间等其他文件系统的相关信息。Super Block的信息被破坏,可以说整个 文件系统结构就被破坏了。

inode.block[15]

block[15]中存放的是该文件使用的block的编号

[0,11]直接存放的是block的编号。

[12,13]存放的是block编号的二级索引的编号,这些索引存储的是block的编号。

[14]存放的是block编号的三级索引同理。

创建文件的流程

1.去inodebitmap,找到一个未使用inode编号。

2.将创建文件信息填入,inodeTable中inode编号所对应的inode。

3.去blockBitmap,找到未使用的块编号。

4.填入inode中的block[15]

5.把创建文件的名字和inode编号映射起来,写到目录去。

查找文件的流程

1.根据文件名,拿到inode = 1005。

2.inode,根据inode编号,看是在哪个分组。

假设group0用的是1 - 1001 的4kb数据块,group1用的是1001 - 2001的数据块。

1005在第二个分组

用1005减去group1的起始地址,用这个结果去inodeBitmap寻找是否真的存在,如果真的存在。

再用1005减去group1的结果去inodeTable,找到inode,就找到文件的所有属性。

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

如若内容造成侵权/违法违规/事实不符,请联系我们进行投诉反馈qq邮箱809451989@qq.com,一经查实,立即删除!

相关文章

C# 整数转罗马数字

罗马数字包含以下七种字符:I,V,X,L,C,D和M。 例如,罗马数字2写做 II ,即为两个并列的 1。12 写做XII,即为XII。27写做 XXVII,即为XXV II 。 通常情况下,罗马数字中小的数字在大的数字…

显示msvcp140.dll丢失要如何解决?这5种方法高效修复msvcp140.dll

msvcp140.dll是Microsoft Visual C Redistributable软件包中的一个文件,主要用于支持使用C编程语言编写的软件的正常运行。如果你的电脑出现缺少msvcp140.dll的错误消息,可能会影响到某些程序的启动和运行。然而,不必过度担心,因为…

【SQL每日一练】分组过滤练习题

文章目录 前言MySQL语法注意: 前言 题目:现在运营想查看每个学校用户的平均发贴和回帖情况,寻找低活跃度学校进行重点运营,请取出平均发贴数低于5的学校或平均回帖数小于20的学校。 drop table if exists user_profile; CREATE …

JavaSE:继承 多态

继承 继承的本质 子类能够使用父类的方法和变量 使用场景:代码复用 在一个类中实现了一个很复杂的方法,给一个新类重新实现这个方法,我们直接继承即可 public class Student {public String sno;public void study() {System.out.printl…

2024妈妈杯数学建模思路A题思路汇总分析 MathorCup建模思路分享

C题:移动通信网络中PCI规划问题 (完整版内容放在文末了) 2024MathorCup A题完整思路完整数据可执行代码后续高质量成品论文 l 难度评分: 3.5/5 l 开放度评分: 3/5 l 适合专业: 通信工程、计算机科学、电子工程 l 主要算法: 图论算法、…

02 - Git 之命令 + 删除 + 版本控制 + 分支 + 标签 + 忽略文件 + 版本号

1 Git相关概念 1.1 以下所谈三个区,文件并不只是简单地在三个区转移,而是以复制副本的方式转移 使用 Git 管理的项目,拥有三个区域,分别是 Working area工作区(亦称为 工作树Working Tree)、stage area …

vscode按ctrl+鼠标左键没反应

vscode按ctrl鼠标左键没反应 问题问题解决 问题 新买的阿里云服务器,在连接vscode后,按ctrl鼠标左键没反应,怎么办? 问题解决 你没有在vscode上安装c的相关插件,安装之后才可以实现按ctrl鼠标左键跳转到函数的定义

书生·浦语大模型第二期实战营(4)笔记

Finetune 为什么要微调 适应下游任务 两种微调范式 上面的是增量训练 下面的是指令微调 数据格式 微调方案 lora: 在基座模型的基础上再套用一个小模型 XTuner 简介 快速上手 LnternLM2 1.8B 多模态LLM

springdoc-openapi使用

springdoc-openapi使用 一、引入pom二、新增配置类OpenApiConfig四、Controller层示例五、配置文件新增内容六、验证 一、引入pom <dependency><groupId>org.springdoc</groupId><artifactId>springdoc-openapi-ui</artifactId><version>1…

IT如何与业务双向奔赴,高效并驱共“盈”企业发展

随着经济和技术的飞速发展&#xff0c;在当前数字化时代中&#xff0c;如何进行有效的数字化转型、运用新技术&#xff0c;特别是让AI技术融入企业的具体业务场景、快速实现应用场景的落地、确保企业不落后于时代发展&#xff0c;是每一位CIO都会面临的一项挑战。 IT部门在企业…

Centos7.9 脚本一键部署nextcloud,配置Nginx代理Https。

目录 一键安装nextcloud 出现错误TypeError Cannot read properties of undefined (reading ‘writeText‘) 生成自签名SSL证书 编辑Nginx配置文件 启动Nginx 一键安装nextcloud 本脚本参考文章&#xff0c;本文较长建议先看完在操作&#xff01;&#xff01;&#xff01;…

基于数据库现有表导出为设计文档

1.查询 SELECTCOLUMN_NAME 字段名,COLUMN_COMMENT 字段描述,COLUMN_TYPE 字段类型,false as 是否为主键 FROMINFORMATION_SCHEMA.COLUMNS wheretable_NAME region -- 表名2.查询结果 3.导出为excel

考研OSchap1计算机系统概述

目录 一、概念 p1 二、功能 p3 1.作为计算机资源的管理者 &#xff08;1&#xff09;文件管理 &#xff08;2&#xff09;存储器管理 &#xff08;3&#xff09;处理机管理 &#xff08;4&#xff09;设备管理 2.作为用户与计算机硬件系统之间的接口 &#xff08;1&…

VMware与新插入的虚拟机 版本不兼容解决方法

1、找到虚拟机目录文件 2、用记事本打开修改版本号&#xff08;找到虚拟机版本号&#xff09; 3、如图所示为版本15的型号 4、修改virtualHW.version "15"&#xff08;引号里面对应上面版本号&#xff09; 5、修改成功

UKP3d,AutoPDMS设置埋地数据导出至AutoPSA的查看方法

一用户在设置了埋地数据&#xff0c;导出至AutoPSA未有数据。具体操作方法如下&#xff1a; AutoPSA里提供两种埋地计算&#xff0c;一是仿start计算&#xff1b;二是仿CII计算 1.AutoPSA10.0仿start计算新埋地模块的操作方法&#xff1a; AutoPSA10.0新埋地模块需要用户根据实…

无线通信基本原理笔记

通信&#xff1a;人与人或人与自然之间通过某种行为或媒介进行的信息交流与传递。 通信模型&#xff1a;信源→发送设备→信道&#xff08;↑噪声&#xff09;→接收设备→信宿 调制&#xff1a;把基带信号变换成适合在信道中传输的信号的技术。通过改变高频载波的幅度、相位…

腾讯一面:你了解js的沙箱环境吗?

去年的面试了&#xff0c;最近复盘了一下&#xff0c;发现菜的一批&#xff0c;有些问题一下子就答出来了&#xff0c;现在答的话&#xff0c;那时候还在瞎鸡儿答我也不知道答的什么。。。。 在 JavaScript 中&#xff0c;沙箱&#xff08;sandbox&#xff09;是一个安全机制&…

【python】Paste Mask

学习来自【OpenCv】利用roi 掩模 将一张图片添加到另一张上 任务描述&#xff1a;提取图片A的 mask 区域&#xff0c;并粘贴到图片B上 文章目录 1 代码实现2 结果展示3 涉及到的库cv2.bitwise_notcv2.bitwise_andcv2.add 附录——获取 mask 的边界框 1 代码实现 A 图 A 图的 …

linux中/etc/hosts文件的内容和功能

更准确的说是主机和ip地址映射绑定配置文件 用于主机名解析成ip地址的 转换配置 效果&#xff1a; 这个东西是局域网下面的解析&#xff0c;老师说是本地局域网解析 windows对应的就是

腾讯云APP备案指南:一站式完成备案手续,助您顺利上线

工信部最新通知要求所有互联网信息服务提供者完成移动互联网应用程序备案手续。腾讯云为开发者提供了简单易行的备案流程&#xff0c;本文详细解答如何在腾讯云平台完成备案&#xff0c;帮助开发者快速上线自己的APP。从验证备案域名到腾讯云审核&#xff0c;一步步指导您完成备…