波奇学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.mzph.cn/news/683344.shtml

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

相关文章

【原创 附源码】Flutter集成Apple支付详细流程(附源码)

最近有时间,特意整理了一下之前使用过的Flutter平台的海外支付,附源码及demo可供参考 这篇文章只记录Apple支付的详细流程,其他相关Flutter文章链接如下: 【原创 附源码】Flutter集成谷歌支付详细流程(附源码) 【原创 附源码】F…

《Java 简易速速上手小册》第2章:面向对象的 Java(2024 最新版)

文章目录 2.1 类和对象 - 构建你的小宇宙2.1.1 基础知识2.1.2 重点案例:设计一个简单的图书类2.1.3 拓展案例 1:学生管理系统2.1.4 拓展案例 2:账户管理系统 2.2 继承与多态 - 让一切变得更有趣2.2.1 基础知识2.2.2 重点案例:动物…

【51单片机】蜂鸣器(江科大)

11.1蜂鸣器 1.蜂鸣器介绍 蜂鸣器是一种将电信号转换为声音信号的器件,常用来产生设备的按键音、报警音等提示信号 蜂鸣器按驱动方式可分为有源蜂鸣器和无源蜂鸣器 有源蜂鸣器:内部自带振荡源,将正负极接上直流电压即可持续发声,频率固定 无源蜂鸣器:内部不带振荡源,需…

C语言strlen和sizeof的区别

strlen和sizeof没有联系 前者是库函数,统计长度的标志是是否有\0 后者是操作符。计算长度的标志是字节数量。

Linux_线程

线程与进程 多级页表 线程控制 线程互斥 线程同步 生产者消费者模型 常见概念 下面选取32位系统举例。 一.线程与进程 上图是曾经我们认为进程所占用的资源的集合。 1.1 线程概念 线程是一个执行分支,执行粒度比进程细,调度成本比进程低线程是cpu…

本地部署 Stable Cascade

本地部署 Stable Cascade 0. 引言1. 事前准备2. 本地部署 Stable Cascade3. 使用 Stable Cascade 生成图片4. Stable Cascade Github 地址 0. 引言 Stable Cascade 模型建立在 Wrstchen 架构之上,它与 Stable Diffusion 等其他模型的主要区别在于它的工作潜在空间要…

软考27-上午题-查找

一、基本概念 1-1、查找表: 同一类型的数据元素构成的集合。 对查找表常用的操作: 从查找表中查询某个特定的元素;检索某个特定的元素的各种属性。 通常只进行这两种操作的查找表:静态查找表 1-1-2、静态查找表: 顺…

B2科目二考试项目笔记

B2科目二考试项目笔记 1 桩考1.1 右起点倒库1.2 移库(左→右)1.3 驶向左起点1.4 左起点倒库1.5 驶向右起点 2 侧方停车考试阶段(从路边开始): 3 直角转弯4 坡道定点停车和起步5 单边桥6 通过限速限宽门7 曲线行驶8 连续…

[OPEN SQL] 删除数据

DELETE语句用于删除数据库表中的数据 本次操作使用的数据库表为SCUSTOM&#xff0c;其字段内容如下所示 航班用户(SCUSTOM) 需要删除以下数据 1.删除单条数据 语法格式 DELETE <dbtab> FROM <wa>. DELETE <dbtab> FROM TABLE <itab>. DELETE FROM &…

Linux makefile 大型多文件的处理

最简单的例子是 main.cpp test.cpp test.h 首先将这三个写好 然后的话 test.cpp 上面输出 helloworld 首先我们在同一个目录下创建一个makefile 文件 然后用vim 编辑它 如下图&#xff08;使用的c&#xff09; mybin 是我们的可执行程序 gcc是编译的命令 gcc 前面必…

人形机器人专题:准直驱执行器深度:人形机器人执行器技术的前沿

今天分享的是人形机器人系列深度研究报告&#xff1a;《人形机器人专题&#xff1a;准直驱执行器深度&#xff1a;人形机器人执行器技术的前沿》。 &#xff08;报告出品方&#xff1a;招商证券&#xff09; 报告共计&#xff1a;34页 准直驱执行器具备独特优势 刚性执行器…

ArcgisForJS基础

文章目录 0.引言1.第一个ArcgisForJS应用程序1.1.安装部署ArcgisForJS1.2.实现ArcgisForJS应用程序 2.开发与调试工具2.1.集成开发环境2.2.调试工具2.3.Firebug 0.引言 ArcGIS API for JavaScript是一款由Esri公司开发的用于创建WebGIS应用的JavaScript库。它允许开发者通过调…

UI文件原理

使用UI文件创建界面很轻松很便捷&#xff0c;他的原理就是每次我们保存UI文件的时候&#xff0c;QtCreator就自动帮我们将UI文件翻译成C的图形界面创建代码。可以通过以下步骤查看代码 到工程编译目录&#xff0c;一般就是工程同级目录下会生成另一个编译目录&#xff0c;会找到…

Stable Diffusion主流UI详细介绍

Stable Diffusion目前主流的操作界面有WebUI、ComfyUI以及Fooocus 这里webui和fooocus在人机交互上的逻辑是一样的&#xff0c;fooocus界面更加简洁。 comfyui是在人机交互上是采用流程节点的交互逻辑&#xff0c;和上面略有区别。 界面分别如下&#xff1a; WebUI界面如下 we…

Spring 用法学习总结(二)之基于注解注入属性

Spring学习 5 基于注解方式创建对象6 基于注解注入属性 5 基于注解方式创建对象 注解是代码的特殊标记&#xff0c;可以简化xml配置&#xff0c;格式&#xff1a;注解名称(属性名称属性值&#xff09;&#xff0c;可以作用在类、方法、属性上 以下注解都可以创建bean实例 Com…

LeetCode 每日一题 Day 62 - 75

1686. 石子游戏 VI Alice 和 Bob 轮流玩一个游戏&#xff0c;Alice 先手。 一堆石子里总共有 n 个石子&#xff0c;轮到某个玩家时&#xff0c;他可以 移出 一个石子并得到这个石子的价值。Alice 和 Bob 对石子价值有 不一样的的评判标准 。双方都知道对方的评判标准。 给你…

提前部署游戏业务防护,为何如此重要?

现在做网络游戏的企业都知道服务器的安全对于我们来说很重要&#xff01;互联网上面的DDoS攻击和CC攻击等等无处不在&#xff0c;而游戏服务器对服务器的防御能力和处理能力要求更高&#xff0c;普通的服务器则是比较注重各方面能力的均衡。 随着游戏行业的壮大&#xff0c;网络…

Shell 学习笔记(一)-Shell脚本编程简介

一 什么是shell&#xff1f; shell是一个用 C 语言编写的程序&#xff0c;它是用户使用 Linux 的桥梁。Shell 既是一种命令语言&#xff0c;又是一种程序设计语言。 Shell 是指一种应用程序&#xff0c;这个应用程序提供了一个界面&#xff0c;用户通过这个界面访问操作系统内…

【学网攻】 第(28)节 -- OSPF虚链路

系列文章目录 目录 系列文章目录 文章目录 前言 一、什么是OSPF虚链路&#xff1f; 二、实验 1.引入 实验目标 实验背景 技术原理 实验步骤 实验设备 实验拓扑图 实验配置 扩展 实验拓扑图 实验配置 实验验证 文章目录 【学网攻】 第(1)节 -- 认识网络【学网攻…

winprop二次开发

winprop二次开发 前言工具1——整合多个天线结果用途代码实现 工具2——wallman辅助工具需求代码实现 前言 工作需求&#xff0c;对该软件进行简单地二次开发&#xff0c;都是一些挺简单的代码&#xff0c;单纯是为了上传之后将其从本地删除 工具1——整合多个天线结果 用途…