Ext文件系统

引言

我们研究的这个文件和以前的IO文件有什么区别

聊聊硬件

机械磁盘是计算机唯一的一个机械设备

1.2磁盘存储结构

1.3磁盘的逻辑结构

1.4真实过程

柱面是一个逻辑上的概念,其实就是每一个面上,相同半径的磁道逻辑上构成的柱面。

所以,磁盘物理上分了很多面,但是逻辑上,磁盘整体是由"柱面"卷起来的。

所以,磁盘的真实情况是:

磁道:

某一盘面的某一个磁道展开:

柱面:

整个磁盘所有盘面的同一个磁道展开,柱面展开:

整盘:

整个磁盘就是多张二维的扇区数组表(三维数组?)

所以,寻找一个扇区:先找到哪一个柱面(Cylinder),在确定柱面内的哪一个磁道(其实就是磁头位置,Head),在确定扇区(Sector),所以就有了CHS。

操作系统只需要使用LBA!!!LBA地址转换为CHS地址,CHS地址转换为LBA地址。磁盘将这两个地址互相转换!

1.5CHS地址&&LBA地址

CHS->LBA

LBA=柱面号C*单个柱面的扇区总数(磁头数*每磁道扇区数)+磁头号H*每磁道扇区数+扇区号S-1

CHS地址->扇区号是从1开始的。柱面和磁道都是从0开始的编号的。

LBA地址是从0开始的

总柱面,磁道个数,扇区总数等信息,在磁盘内自动维护,上机开始会获取到这些参数。

LBA转换CHS

柱面号C=LBA //(磁头数*每磁道扇区数)后面的这个就是单个柱面的扇区总数

磁头号H=(LBA%(磁头数*每磁道扇区数))//每磁道扇区数

扇区号S=(LBA%每磁道扇区数)+1

磁盘内部自己可以实现CHS和LBA的转换。

所以,从现在这个角度看磁盘就是一个一维数组,数组的下标就是每一个扇区的LBA地址。os使用磁盘,就可以使用一个数字访问扇区。

正式开启文件系统

三小问

如何判断处于分区

分区写入文件系统,无法直接使用,需要于特定的目录关联,进行挂载才能使用。

所以,可以根据目标文件的路径前缀,判断我在哪一个分区。

内存中的路径缓存结构

  • 每个文件都要有对应的dency文件,所有被打开的文件,就可以在内存中形成树形结构。
  • 整个树形结构也会同时属于LRU结构中,进行节点淘汰。
  • 整个结构也会属于Hash,方便于查找。
  • 整个树形结构,在内存整体构成了Linux的路径缓存结构,打开访问文件,首先在这颗树下根据路径进行查找,找到就返回属性inode和内容,没找到就从磁盘加载路径,添加dentry结构,缓存新路径。

fopen一个文件的过程????

不同角度说明文件系统

软硬链接

相关推荐
codigger1 小时前
线上数据库连接池打满:从应急止损到架构根治的完整方案
数据库·sql·程序员
倔强的石头_1 小时前
集中式与分布式怎么选?我把手头11套系统重新过了一遍秤
数据库
挖掘狂人1 小时前
线上数据库连接池打满:从应急止损到架构根治的完整方案
数据库·sql·程序员
Rainmicro2 小时前
【无标题】
java·数据库·算法
Thanks_ks2 小时前
MySQL 的索引是什么?用图书馆的目录讲明白
数据库·sql·mysql·索引·联合索引·explain·慢查询优化
CoderYanger8 小时前
Java EE 进阶:8.MyBatis 操作数据库(入门)(第二弹)
java·数据库·spring boot·spring·面试·java-ee·mybatis
wafrdggh10 小时前
2026电商快递批量查询怎么用?固乔助手模板设置评测
大数据·数据库·小程序
一个天蝎座 白勺 程序猿11 小时前
KingbaseES数据库归档重做日志文件管理:从配置到运维的实战指南
运维·数据库·oracle·kingbasees·金仓数据库
龙腾AI白云14 小时前
仿真到现实(Sim-to-Real)迁移:跨越仿真与现实鸿沟
数据库·机器学习·plotly·知识图谱·tornado
freejackman17 小时前
【实战二】字段级血缘追踪:拆解 AST 迷局,精准穿透函数链与子查询
大数据·数据库·sql