当前位置: 首页 > news >正文

Linux之文件系统

个人主页:点我进入主页

专栏分类:C语言初阶  C语言进阶  数据结构初阶    Linux    C++初阶      算法   C++进阶

欢迎大家点赞,评论,收藏。

一起努力,一起奔赴大厂

目录

一.磁盘

二.对磁盘进行管理

三.通过inode找到文件


一.磁盘

        操作系统存在大量的文件,其中大部分没有打开的文件,它们存储在哪里呢?磁盘!!!,下面是磁盘的物理结构,看图片:

其中每一个圆环是一个磁道,每一个圆弧就是一个扇区,一般情况下一个的扇区是512k,例如一个800G的磁盘可以将它抽象成为

每一块都是由扇区构成

这样我们就可以得到一个数组,每一个扇区都有一个应的数组下标,于是就出现了CHS寻址法,当我们知道一个扇区的下标就可以找到在哪一片磁盘的哪一个磁道的哪一个扇区,例如下标为500,每一片有1000个扇区,10个磁道,也就是说一个磁道有100个扇区,500/10000=0,所以在第0片,500%10000=500,500/100=5,所以在第5个磁道,500%100=0,所以在第0片的第5个磁道的0扇区。 一般来说操作系统和磁盘进行交互时的基本单位就是4KB,也就是8个扇区

二.对磁盘进行管理

        磁盘可以分为多个分区,对一个分区管理好就可以管理好其它的分区,管理一个分区就可以对一个分区进行分组,这就是利用了分治的思想

管理就是先分区然后分组,对于其中的一个分组,每一个分组就有多个块组

 

  • Data blocks在一个块组占绝大数,它就是存放的是写在文件里面的内容,其中每一个小块是4kb。
  • Block Bitmap是一个位图结构它是为了表示哪一个数据块存储了数据,存储了就是1,没有就是0.
  • inode Table存放文件的属性,它是一个结构体,在Linux中它一般是128个字节。它也是有一个块,其中每一块是4kb,一个块是由4*1024/128=32个inode,所以一个块可以存放32个inode,也就是对32个文件的属性。
  • inode Bitmap中每一个比特位都表示一个inode是否空闲。
  • Super Block表示的是block的数量和indoe的数量,当然不是每一个块组都有这个,每几个块组就有一个超级快,当然超级块存放的内容是一样的(在一个分组),这是以应对数据的丢失。

在文件的属性中有一个数组datablocks它是为了寻找文件存储的内容,它的结构为:

其中0到11每个都指向一个数据块,12和13是指向一个块,但是这个块的4kb都是指向别的数据块,14是指向一个块,这个快指向一个和12一样的块。 

三.通过inode找到文件

        我们凭什么拿到文件的inode号??我们用的可是文件名啊!!文件=文件属性+文件的内容,其中文件的内容就是文件和inode的映射,所以我们就可以理解一个目录不可以由同名的文件,查找文件就是根据文件名然后找到文件的indoe,目录的r属性本质就是我们想得到文件的内容,我们没有这个权限就不能得到文件的inode,w同样;我们如何理解文件的删除呢?文件的删除只需要将文件的inode Bitmap置为0,然后将它的block Bitmap也置为0即可,所以当我们删除文件后可以将数据恢复。我们如何找到文件的inode号呢?例如一个文件的pwd为/home/yang/code我们想得到它的inode,需要得到code的inode,一次类推需要得到/的inode,/的inode是可以直接获取的,而linux是会缓存路径的,我们可以快速获取它的inode。

相关文章:

  • 北京网站建设多少钱?
  • 辽宁网页制作哪家好_网站建设
  • 高端品牌网站建设_汉中网站制作
  • C#中的TCP和UDP
  • LeetCode每日一题_3143.正方形中的最多点数
  • 【虚拟化】KVM使用virt-manager部署及管理虚拟机
  • 嵌入式FPGA(现场可编程门阵列)面试题及参考答案
  • 简明 | ResNet特点、残差模块、残差映射理解摘要
  • 【C语言】C语言期末突击/考研--结构体与C++引用
  • 2024华硕迷你主机选购指南:全系列覆盖
  • 深入理解 C 语言中的联合体
  • JavaWeb基础1:HTML/CSS/JS/HTTP
  • 蓝屏事件:网络安全的启示
  • 云原生的候选应用
  • 静态代理与动态代理区别?
  • 记一次Mysql8.0使用GROUP BY查询导致异常问题
  • 供应链安全:黑客攻击 Nimble 包
  • 【LeetCode】133.克隆图
  • 【node学习】协程
  • Brief introduction of how to 'Call, Apply and Bind'
  • CSS盒模型深入
  • Java 实战开发之spring、logback配置及chrome开发神器(六)
  • Java方法详解
  • Lsb图片隐写
  • text-decoration与color属性
  • Vue 2.3、2.4 知识点小结
  • 第三十一到第三十三天:我是精明的小卖家(一)
  • 基于Dubbo+ZooKeeper的分布式服务的实现
  • ------- 计算机网络基础
  • 如何邀请好友注册您的网站(模拟百度网盘)
  • 使用docker-compose进行多节点部署
  • 适配iPhoneX、iPhoneXs、iPhoneXs Max、iPhoneXr 屏幕尺寸及安全区域
  • 正则表达式
  • d²y/dx²; 偏导数问题 请问f1 f2是什么意思
  • RDS-Mysql 物理备份恢复到本地数据库上
  • SAP CRM里Lead通过工作流自动创建Opportunity的原理讲解 ...
  • ​如何在iOS手机上查看应用日志
  • # 职场生活之道:善于团结
  • #我与Java虚拟机的故事#连载08:书读百遍其义自见
  • $ is not function   和JQUERY 命名 冲突的解说 Jquer问题 (
  • (2009.11版)《网络管理员考试 考前冲刺预测卷及考点解析》复习重点
  • (2015)JS ES6 必知的十个 特性
  • (2024,RWKV-5/6,RNN,矩阵值注意力状态,数据依赖线性插值,LoRA,多语言分词器)Eagle 和 Finch
  • (安全基本功)磁盘MBR,分区表,活动分区,引导扇区。。。详解与区别
  • (分享)自己整理的一些简单awk实用语句
  • (附源码)node.js知识分享网站 毕业设计 202038
  • (三)Honghu Cloud云架构一定时调度平台
  • (四)鸿鹄云架构一服务注册中心
  • (微服务实战)预付卡平台支付交易系统卡充值业务流程设计
  • (一)使用IDEA创建Maven项目和Maven使用入门(配图详解)
  • (已解决)什么是vue导航守卫
  • ***linux下安装xampp,XAMPP目录结构(阿里云安装xampp)
  • .MSSQLSERVER 导入导出 命令集--堪称经典,值得借鉴!
  • .NET 8.0 中有哪些新的变化?
  • .Net Attribute详解(上)-Attribute本质以及一个简单示例
  • .NET MAUI Sqlite程序应用-数据库配置(一)
  • .net web项目 调用webService
  • .NET 设计模式—简单工厂(Simple Factory Pattern)