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。

相关推荐
饮啦冰美式26 分钟前
22.04Ubuntu---ROS2使用rclcpp编写节点
linux·运维·ubuntu
wowocpp26 分钟前
ubuntu 22.04 server 安装 和 初始化 LTS
linux·运维·ubuntu
Huaqiwill27 分钟前
Ubuntun搭建并行计算环境
linux·云计算
wclass-zhengge30 分钟前
Netty篇(入门编程)
java·linux·服务器
Lign1731431 分钟前
ubuntu unrar解压 中文文件名异常问题解决
linux·运维·ubuntu
vip4511 小时前
Linux 经典面试八股文
linux
大霞上仙1 小时前
Ubuntu系统电脑没有WiFi适配器
linux·运维·电脑
孤客网络科技工作室2 小时前
VMware 虚拟机使用教程及 Kali Linux 安装指南
linux·虚拟机·kali linux
颇有几分姿色3 小时前
深入理解 Linux 内存管理:free 命令详解
linux·运维·服务器
AndyFrank4 小时前
mac crontab 不能使用问题简记
linux·运维·macos