【Linux】文件系统

🌈前言

本篇文章进行操作系统中文件系统的学习!!!


🌷1、磁盘的组成

我们之前所学的东西,都是在内存中的,现在我们要将视角从内存中迁移到“磁盘”上!!!

  • 文件在内存中打开时,不是磁盘中的所有文件都被打开,没有被打开的依然在磁盘静静躺着

  • 磁盘中有大量的文件,这些文件非常多, 非常杂乱,磁盘要对其进行管理

  • 文件系统:磁盘级别的文件管理,本质工作就是管理文件,用于明确磁盘或分区上的文件的方法和数据结构,即在存储设备上组织文件的方法

  • 它负责为用户建立文件,存入、读出、修改、转储文件,控制文件的存取和删除


🍡1.1、磁盘的物理结构

机械磁盘是我们计算机上唯一的一个机械设备,现在大部分电脑用的都是固态硬盘(SSD)

在这里插入图片描述

在这里插入图片描述


🍢1.2、磁盘的存储结构

磁盘的存储结构:

  • 盘片:盘片有两个盘面,每个表面都涂有磁性材料,磁性材料是用来保存二进制数据的,每个磁盘的两个表面都能够存储数据

在这里插入图片描述

  • 磁头:硬盘读取数据的关键部件,它的主要作用就是将存储在硬盘盘片上的磁信息转化为电信号向外传输,而它的工作原理则是利用特殊材料的电阻值会随着“磁场变化”的原理来读写盘片上的数据

  • 一个盘面,只有一个磁头!!!

盘片有磁性,磁性分为NS极,磁头改变NS极,就是改变了二进制01


  • 磁道和扇区:每个盘片被划分为一个个磁道(一个个半径不同的同心圆环),每个磁道又划分为一个个扇区(磁道上的一个弧段),扇区是磁盘的最小存储单元,通常是512字节

在这里插入图片描述
在这里插入图片描述

  • 柱面:所有盘面中半径相同的磁道组成柱面

在这里插入图片描述

OS是如何对磁盘进行读写数据的呢???

  • 读写磁盘的时候,磁头找的是某一个面(盘面)的某一个磁道(柱面,距离圆心的半径)的某一个扇区(磁道上的一段扇形存储单元)

  • 这种寻找方式,叫做:CHS(Cylinder Head Sector)寻址

  • 只要我们能找到磁盘上的盘面,柱面(磁道)和扇区,就能找到一个存储单元

在这里插入图片描述


🍣1.3、磁盘的逻辑结构

我们以前学英语,都是把录音带放到录音机里面来跟着学习的!!!

  • 录音带里面的带子存储着数据,该数据可以通过录音机解析播放出来

  • 录音带里面的带子可以拉出来就是一条直线的带子(线性存储数据),也可以拉回去

在这里插入图片描述

磁盘里面是通过以扇区为单位进行数据存储的,磁盘里面有无数个很小的磁铁

  • 磁盘也可以将其看作是一个线性的结构,将磁盘的管理转化成对线性结构的管理

  • OS对磁盘进行IO磁盘读写时,是按4K字节为单位进行访问的

  • OS可以将线性结构的下标(LBA逻辑块地址)转化成CHS进行磁盘寻址

LBA转换成CHS的公式:#c = #lba / (S*H)、#h = (#lba/S) % H、#s = (#lba%S) + 1

  • / 是整数除法
  • % 是取整数除法中的余数
  • #c、#h、#s分别是磁柱、磁头、扇区的编号
  • #lba是逻辑区块编号
  • H=heads per cylinder,每个磁柱的磁头数
  • S=sectors per track,每磁道的扇区数

在这里插入图片描述


🌸2、文件系统

🍤2.1、文件系统的结构

Linux ext2文件系统,下图为磁盘文件系统图

在这里插入图片描述

  • 磁盘是典型的块设备,硬盘分区被划分为一个个的block

  • 磁盘是典型的块设备,硬盘分区被划分为一个个的block

  • 例如:mke2fs的【-b】选项可以设定block大小为1024、2048或4096字节。而上图中启动块(Boot Block)的大小是确定的!!!

Linux下文件的内容和属性是分开存储的,内容被保存到Data blocks、属性被保存到inode table

  • 文件的内容是会发生改变的(不断增多),而属性是不变的(稳定的),它是定长的!

  • 文件系统设计时为了减少它们之间的关联性,就分开进行存储

在这里插入图片描述

文件系统中各个块中的作用:

  • Block Group:ext2文件系统会根据分区的大小划分为数个Block Group。而每个Block Group都有着相同的结构组成

  • Super Block(超级块):存放文件系统本身的结构信息,记录的信息主要有:bolck 和 inode的总量,未使用的block和inode的数量,一个block和inode的大小。Super Block的信息被破坏,可以说整个文件系统结构就被破坏了

  • GDT(Group Descriptor Table): 块组描述符,描述块组属性信息

  • i节点表(inode table):存放文件属性,如:文件大小,所有者,最近修改时间等,inode table里面还会有一个inode编号和block[],用来与对应的Data Block建议联系!!!

  • inode table其实还存储了一个blocsk编号 – 块编号,用来与数据块建立关联的!
  • inode编号与inode是不同的概念,inode里面保存着inode编号,Linux是通过inode编号标识文件的

在这里插入图片描述

  • 数据块(Data blocks):存放文件内容

  • 块位图(Block Bitmap):Block Bitmap中记

评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值