@[TOC]
磁盘和磁带
- 磁盘和磁带的工作原理基本相同
- 对于磁盘,其有多个磁片,数据是存放在磁片中的一个同心圆的扇区(一般取512字节为一个单位)
- 当我们学习文件系统的时候,用2D的视角分析磁盘
- 我们可以把磁片按同心圆切割,最后连接起来的就成为磁带那种2D的线。
- 以连续的2D视角,方便学习。
文件系统
- 直接管理一个磁盘的代价很高,如果将磁盘进行分区(也就是C盘,D盘等),只要管理好一个区,其它区就可以管理好,同时因为分块的原因,区块间的耦合性非常低,维护起来也很容易。
- 文件系统就是OS为了管理磁盘每个分区,为每个分区内置的一种管理系统。
- 理解文件系统是,要学会用2D的视角分析内存,采用一种虚拟映射思想,毕竟磁盘的数据定位需要很多操作协同。
- 以linux下的 文件EXT系统介绍
Data Block和Block Bitmap
当文件写入内容时,OS会遍历 block bitmap,找到第一个为0的二进制位,使用这个编号对于的内存块。
inode Table 和inode Bitmap
- linux下,OS并不是通过文件名识别一个文件的,而是通过一个编号来标识一个文件的,也就是inode。
- inode的内存块中存放的时文件属性,和data block中的编号数组,可以看成是一种映射数组
- 当创建一个新的文件时,OS会遍历inode bitmap,找第一个为0的二进制位,其对应的编号就是新文件的ionde。
- 当删除一个文件时,inode bitmap对应二进制位变为0,block bitmap对应二进制位也变为0
Super block
存放文件系统本身的结构信息。记录的信息主要有:bolck 和 inode的总量,
未使用的block和inode的数量,一个block和inode的大小,最近一次挂载的时间,最近一次写入数据的时间,最近一次检验磁盘的时间等其他文件系统的相关信息。Super Block的信息被破坏,可以说整个文件系统结构就被破坏了 。
Group Descriptor Table:
块组描述符,描述数据块的使用情况,inode块的使用情况等资源信息
目录
- 目录也是一种文件,也拥有它独立的inode
- 目录存放的数据是:其子文件的inode和子文件名的映射关系
对文件的指令
对文件的指令本质都是对特定inode对应文件的访问与操作
touch
创建文件时,使用inode bitmap中第一个二进制位为0对应编号作为新文件的inode
cat
根据文件名与inode的映射关系,打印对应inode的data block中的数据
rm
将inode bitmap 中对应二进制位赋值为0,同时对block bitmap也继续同样的删除操作
cp
以指定文件为模板,建立新的inode,同时将这些新文件的文件名和inode放在指定的目录下
mv
将目录下的一对inode和文件名放到另外一个目录下。
回收站
回收站的本质是将一个目录下的inode与文件名移到另外一个目录下
软硬链接
软链接
- 软连接就像window下的快捷方式。通过window的快捷方式,即使软件的执行文件的路径不在当前路径下,也可以完成对软件的执行
- 软链接是新建一个文件,存放链接对象的地址。
ln -s 目标文件名 软链接的新文件名
硬链接
- 硬链接是链接对象的别名,不生成新的文件
- 硬链接是一种引用计数
ln -s 目标文件名 硬链接文件名
删除链接
unlink +链接名
软硬链接的区别
- 软链接是有自己独立的inode,会创建新的文件
- 硬链接是链接对象的inode的一种新的映射关系---也就是别名,不会创建文件。
硬链接数
硬链接的使用
为什么一个新建的目录它的硬链接数为2?
.就是指向当前目录,这也就是为什么一个新建的目录为什么链接数为2如何再当前目录里面下新建一个目录,当前目录的硬链接数会变为2是因为 新建目录里面有个‘’..’