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。

相关推荐
AirDroid_cn20 分钟前
打开网页即可远程控制手机,Linux系统亦可使用
linux·智能手机·安卓·远程工作·远程控制·远程控制手机·远程投屏
bubiyoushang8885 小时前
Windows11 WSL2 Ubuntu编译安装perf工具
linux·运维·ubuntu
行云流水剑6 小时前
【学习记录】使用 Kali Linux 与 Hashcat 进行 WiFi 安全分析:合法的安全测试指南
linux·学习·安全
xuanwojiuxin7 小时前
linux panic-propagation
linux·运维·服务器
achene_ql9 小时前
select、poll、epoll 与 Reactor 模式
linux·服务器·网络·c++
藥瓿亭9 小时前
K8S认证|CKS题库+答案| 9. 网络策略 NetworkPolicy
linux·运维·docker·云原生·容器·kubernetes·cks
千千寰宇9 小时前
[数据传输/网络传输/序列化/计算机组成原理] 字节序/大小端
linux·计算机组成原理/硬件/半导体
LFloyue9 小时前
Linux离线(zip方式)安装docker
linux·docker
Blue桃之夭夭10 小时前
深入理解Optional:处理空指针异常
linux·windows·microsoft
什么半岛铁盒10 小时前
Linux线程与进程关系及底层实现
java·linux·运维