波奇学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缓存,保存最常用的路径。

  • 9
    点赞
  • 9
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值