波奇学Linux:文件系统

磁盘认识

磁盘被访问的基本单元是扇区-512字节。

磁盘可以看成多个同心圆,每个同心圆叫做磁道,多个扇区组成同心圆。

我们可以把磁盘看做由无数个扇区构成的存储介质。

要把数据存到磁盘,先定位扇区,用哪一个磁头,哪一个磁道。

磁盘抽象

磁盘可以抽象成线性结构,基于扇区的数组,任意一个扇区都有抽象地址LBA,相当于数组下标。

磁盘寻址是CHS(磁道,磁头,扇区),通过扇区的抽象地址LBA到扇区的具体物理位置。

磁盘也有寄存器

文件系统

磁盘划分

 bootblock保存与开机相关的文件,剩余的空间可以划分为多个block group结构。

Superblock:文件系统对应信息

DataBlock:存文件内容区域,以块形式呈现,常见的是4kb大小-文件系统的块大小

inodeTable:有多个inode,单个文件的所有属性,主要是128字节,一个文件一个inode,inode天然有唯一的编号,只在自己的分区中使用。

在Linux用inode标识编号

struct inode

{

inode number

文件类型

权限

引用计数

拥有者

所属组

ACM时间

int block[NUM]

}

文件对应在DataBlock数据块编号保存在block数组中

数据blocks是前12个位置是直接索引,对应的下标的数据块是文件本身内容,后面的是间接索引,保存的下标对应的数据块文件内容的对应的直接索引,最后一个是三级索引,保存的下标对应的数据块是二级索引。

blockBitmap表示Datablocks哪些数据块中被使用,比特位位置和块号映射,比特位内容,表示该块有没有被使用。

inodeBitmap:比特位和inode的编号映射起来,比特位内容inode是否有效,inode的有效与否表示文件是否删除。

GroupDescriptorBitmap:描述整个组基本的分类使用情况。

SuperBlock:整个分区的文件系统情况,分区包含多个组。如分区被分为多少个组,每个组的大小。SuperBLock不会在每个组都存在。

Inode

一个文件对应一个inode,inode对应有自己编号,分区内有效。

Inode的作用

新建文件:inodeBitmap申请inode,0置1,在inodeTable填写文件属性,在blockBitmap中寻找空白数据块,输入数据后,修改blockBitmap。

系统是如何知道Inode编号?

文件名是如何和Inode映射起来?

目录也是文件,也有自己的Inode。目录也有数据块存放文件名和inode的映射关系。

同一个目录下文件名不能重复,同名文件导致映射冲突问题。

目录下,没有w权限,无法创建文件,无法把inode和文件名写到目录文件的数据块。

目录下没有r权限,无法查看文件,没有读权限就不能读取到目录文件数据块

目录下,没有x,无法进入这个目录,无法读取目录inode,无法改变环境变量,改变位置关系。

如何知道目录inode?递归回根目录,再往下找。

寻找文件,先递归找到根目录,再找到对应目录,对应文件。

Linux的dentry缓存,保存最常用的路径。

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

如若内容造成侵权/违法违规/事实不符,请联系长河编程网进行投诉反馈email:809451989@qq.com,一经查实,立即删除!

相关文章

[word] word中怎么插入另外一个word文档 #媒体#职场发展

word中怎么插入另外一个word文档 word中怎么插入另外一个word文档?有有些小伙伴在制作文档的时候,可能需要用到多个文档进行配合制作,今天小Q来给大家演示一下,插入Word文档的方法,插入其他类型文档的方法也是一样的。…

Excel模板2:进度条甘特图

Excel模板2:进度条甘特图 ‍ 今天复刻B站up【名字叫麦兜的狗狗】的甘特图:还在买Excel模板吗?自己做漂亮简洁的甘特图吧!_哔哩哔哩_bilibili 阿里网盘永久分享:https://www.alipan.com/s/cXhq1PNJfdm 当前效果&…

【无标题】Matlab之annotation函数——创建图形注释(箭头、椭圆、矩形)

应用1:创建文本箭头注释 创建一个简单线图并向图窗添加文本箭头。用归一化的图窗坐标指定文本箭头位置,起点为 (0.3,0.6),终点为 (0.5,0.5)。通过设置 String 属性指定文本说明。 figure plot(1:10) x [0.3 0.5]; y [0.6 0.5]; annotation…

高中信息技术—数据采集与编码(二)

编码 编码是指信息按照某种格式转化为另一种格式的过程。 在计算机领域编码主要分为字符编码、条形码、二维码、声音编码、图像编码、视频编码 计算机存储容量单位 计算机中最小的存储单位:位,bit或b 计算机中基本单位:字节,Byte…

[UI5 常用控件] 09.IconTabBar,IconTabHeader,TabContainer

文章目录 前言1. IconTabBar1.1 简介1.2 基本结构1.3 用法1.3.1 颜色,拖放,溢出1.3.2 Icons Only , Inner Contents1.3.3 showAll,Count,key,IconTabSeparator 1.3.4 Only Text1.3.5 headerMode-Inline1.3.6 design,IconTabSeparator-icon1.3.7 DensityM…

分布式文件系统 SpringBoot+FastDFS+Vue.js【二】

分布式文件系统 SpringBootFastDFSVue.js【二】 六、实现上传功能并展示数据6.1.创建数据库6.2.创建spring boot项目fastDFS-java6.3.引入依赖6.3.fastdfs-client配置文件6.4.跨域配置GlobalCrosConfig.java6.5.创建模型--实体类6.5.1.FastDfsFile.java6.5.2.FastDfsFileType.j…

【并发编程】AQS原理

📝个人主页:五敷有你 🔥系列专栏:并发编程 ⛺️稳中求进,晒太阳 1. 概述 全称是 AbstractQueuedSynchronizer,是阻塞式锁和相关的同步器工具的框架 特点: 用 state 属性来表示资源的状…

网络爬虫实战 | 上传以及下载处理后的文件

以实现爬虫一个简单的(SimFIR (doctrp.top))网址为例,需要遵循几个步骤: 1. 分析网页结构 首先,需要分析该网页的结构,了解图片是如何存储和组织的。这通常涉及查看网页的HTML源代码,可能还包…

从汇编角度解释线程间互斥-mutex互斥锁与lock_guard的使用

多线程并发的竞态问题 我们创建三个线程同时进行购票&#xff0c;代码如下 #include<iostream> #include<thread> #include<list> using namespace std; //总票数 int ticketCount100; //售票线程 void sellTicket(int idx) {while(ticketCount>0){cou…

图像识别基础之模板匹配

principle 图像匹配 本质&#xff1a;图像的相似度很高(矩阵的相似度很高) code /*\brief 我的图像匹配函数&#xff0c;获取差方和均值最小的矩阵作为结果\param srcPicFile:用以匹配的图像文件\param templatePicFile:模板图像文件\param destPicFile:输出的检测结果文件…

leetcode142. 环形链表 II

leetcode142. 环形链表 II 题目 思路 集合法 将节点存入set&#xff0c;若重复出现则说明是环 快慢指针法 分别定义 fast 和 slow 指针&#xff0c;从头结点出发&#xff0c;fast指针每次移动两个节点&#xff0c;slow指针每次移动一个节点&#xff0c;如果 fast 和 slow指…

BIO、NIO、Netty演化总结

关于BIO&#xff08;关于Java NIO的的思考-CSDN博客&#xff09;和NIO&#xff08;关于Java NIO的的思考-CSDN博客&#xff09;在之前的博客里面已经有详细的讲解&#xff0c;这里再总结一下最近学习netty源码的的心得体会 在之前的NIO博客中我们知道接受客户端连接和IO事件的…

懒人精灵 之 Lua 捕获 json解析异常 ,造成的脚本停止.

Time: 2024年2月8日20:21:17 by:MemoryErHero 1 异常代码 Expected value but found T_END at character 12 异常代码 Expected value but found T_OBJ_END at character 223 处理方案 - 正确 json 示范 while true do--Expected value but found T_END at character 1--Ex…

tcp 中使用的定时器

定时器的使用场景主要有两种。 &#xff08;1&#xff09;周期性任务 这是定时器最常用的一种场景&#xff0c;比如 tcp 中的 keepalive 定时器&#xff0c;起到 tcp 连接的两端保活的作用&#xff0c;周期性发送数据包&#xff0c;如果对端回复报文&#xff0c;说明对端还活着…

【lesson53】线程控制

文章目录 线程控制 线程控制 线程创建 代码&#xff1a; 运行代码&#xff1a; 强调一点&#xff0c;线程和进程不一样&#xff0c;进程有父进程的概念&#xff0c;但在线程组里面&#xff0c;所有的线程都是对等关系。 错误检查: 传统的一些函数是&#xff0c;成功返回0&…

算法--数论二

这里写目录标题 高斯消元高斯消元求线性方程组用途高斯消元的数学思想例题代码 二级目录 一级目录二级目录二级目录二级目录 一级目录二级目录二级目录二级目录 一级目录二级目录二级目录二级目录 一级目录二级目录二级目录二级目录 高斯消元 高斯消元求线性方程组 用途 这个…

Rust - 切片Slice

Slice类型 Slice数据类型没有所有权&#xff0c;slice允许我们引用集合中一段连续的元素序列而不用引用整个集合。字符串slice(string slice) 是String中 一部分值的引用。如下述代码示例&#xff0c;不是对整个String的引用而是对部分String的引用&#xff1a; fn main() {l…

Android矩阵Matrix动画缩放Bitmap移动手指触点到ImageView中心位置,Kotlin

Android矩阵Matrix动画缩放Bitmap移动手指触点到ImageView中心位置&#xff0c;Kotlin 借鉴 Android双指缩放ScaleGestureDetector检测放大因子大图移动到双指中心点ImageView区域中心&#xff0c;Kotlin&#xff08;2&#xff09;-CSDN博客 在此基础上实现手指在屏幕上点击后&…

模拟算法总结(Java)

目录 模拟算法概述 练习 练习1&#xff1a;替换所有的问号 练习2&#xff1a;提莫攻击 练习3&#xff1a;Z字形变换 模拟算法概述 模拟&#xff1a;根据题目要求的实现过程进行编程模拟&#xff0c;即题目要求什么就实现什么 解决这类题目&#xff0c;需要&#xff1a; 1…

【Linux取经路】文件系统之被打开的文件——文件描述符的引入

文章目录 一、明确基本共识二、C语言文件接口回顾2.1 文件的打开操作2.2 文件的读取写入操作2.3 三个标准输入输出流 三、文件有关的系统调用3.1 open3.1.1 比特位级别的标志位传递方式 3.2 write3.2.1 模拟实现 w 选项3.2.2 模拟实现 a 选项 3.3 read 四、访问文件的本质4.1 再…