16-目录与文件系统

我们在使用计算机的时候,用户看到的磁盘就是一个文件目录的结构(文件树),因此需要磁盘被抽象成一个文件系统,最后一层抽象就是实现文件到磁盘的映射关系。

用户眼里的磁盘是堆树结构的有组织的文件。文件系统就是实现文件到盘块的映射。

目录树结构优点:易于分类,且拓展性好,每个节点就是一个目录
我们如何使用目录呢:/my/data/a 定位文件a,即通过文件路径名找到文件,更准确地说是通过文件路径找到文件a的FCB(文件控制块)。

因此我们需要做的就是实现文件路径名到文件FCB的映射,实现这个需求需要明确两个问题

  • 每一级目录(树节点)存放着什么信息
  • 磁盘块又要存放什么信息来实现目录结构

因为我们需要通过比较文件名才能找到文件,所以目录中要存放子目录的文件名,然后我们还需要在磁盘中操作该文件,因此还需要存子目录的FCB。但实际上我们只需要比较一个文件名,却读取了大量的FCB,这毫无疑问是一种浪费。因此根据索引的思想,我们可以在目录中存放子目录名+该目录对应的FCB地址。这里的地址可以是一个索引,目录里存的就是<文件名:索引值>,实现这一索引结构,需要磁盘配合,需要磁盘划分一块连续的区域来存放FCB块,这样就能建立索引值到FCB地址的映射,类似于数组的下标访问。因为根目录没有上一级目录来保存它的索引值,因此需要在磁盘中找一个固定的地址存放根目录,因此上面两个问题明确后就是:

  1. 目录中存放子目录的文件名喝子目录FCB的索引值
  2. 磁盘块要划分一段连续的区域专门存放FCB块,并定义一个初始地址作为根目录的索引。

磁盘的划分结构如下:

innode位图:哪些inode空闲,哪些被占用
盘块位图:哪些盘块是空闲的,硬盘大小不同这个图的大小也不同
超级块:记录两个位图有多大等信息。

完成全部多级抽象(映射)下的磁盘使用如下图所示

發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章