1.文件系统层次结构
用户接口->文件基本介绍
文件目录系统->文件目录
存取控制模块->文件保护
逻辑文件系统与文件信息缓冲区->文件逻辑结构
物理文件系统->文件的物理结构
辅助分配管理->文件存储空间的管理
设备管理模块->磁盘管理
2.文件系统布局
2.1物理格式化
物理格式化,即低级格式化——划分扇区,检测坏扇区,并用备用扇区替换坏扇区
2.2逻辑格式化(文件系统在外存的结构)
磁盘分区(分卷 Volume)后,对各分区进行逻辑格式化,完成文件系统初始化注:逻辑格式化
后,灰色部分就有实际数据了,白色部分还没有数据
空闲块用0101等等表示是否空闲
i结点也是索引结点
通过索引结点的下标(索引起始地址)+索引大小->定位到任何索引的所存储的位置
- 主引导记录(MBR),位于磁盘的0号扇区,操作系统的引导步骤为:主存的ROM中的BIOS→MBR→扫描分区表→PBR。
- 引导块:每个分区都从一个引导块开始,负责启动该分区中的操作系统。
- 超级块:包含文件系统的所有关键信息,计算机启动时读入内存。典型信息有分区的块数量及大小、空闲块的数量和指针、空闲的FCB数量和FCB指针。
- 文件系统的空闲块信息可以使用位示图或空闲链表法等形式给出。可以使用索引结点进行优化。最后磁盘中还存放着所有目录和除目录之外的文件。
2.3文件系统在内存中的结构
3.外存空闲空间管理
3.1存储空间的划分和初始化
存储空间的划分:将物理磁盘划分 为一个个文件卷(逻辑卷、逻辑盘)
存储空间的初始化: 将各个文件卷划分为目录区、文件区
目录区主要存放文件目录信 息(FCB)、用 于磁盘存储空间管理的信息
文件区用于存放 文件数据
3.2存储空间管理-空闲表法
条件:适用于 “连续分配方式”
其基本思想和动态分区分配一致,相似问题也有空闲盘区的分配算法(首次适应算法、最佳适应算法、最坏适应算法等)、回收盘区后空闲盘块表的更改等问题。
3.3存储空间管理——空闲链表法
- 空闲盘块链:以盘块为单位,每一个空闲盘块记录下一个空闲盘块的指针。
- 空闲盘区链:以盘区(几个相邻的空闲盘块)为单位,每一个空闲盘区的首盘块记录下一个空闲盘区的指针和此盘区的长度
空闲盘区链和空闲盘块链相比:在文件分配多个盘块效率更高,空闲盘块链只能一个一个取,空闲盘区链可以一次多个。
操作系统保存着链头、链尾指针。
3.4位示图
位示图(思想):每个二进制位对应一个盘块。在本例中, “0”代表盘块空闲, “1”代表盘块已分配。
位示图一般用连续的“字”来表示,如本例中一 个字的字长是16位,字中的每一位对应一个盘块。因此可以用(字号,位 号)对应一个盘块号。当然有的题目中也描述为(行号,列号)
一个二进制位代表一个盘块(0为空闲)。
注意题中的字号与位号是不是从0开始编号。
分盘与回收:
如何分配:若文件需要K个块,①顺序扫描位示图,找到K个相邻或不相邻 的“0” ;②根据字号、位号算出对应的盘块号,将相应盘块分配给文件; ③将相应位设置为“1”。
如何回收:①根据回收的盘块号计算出对应的字号、位号;②将相应二进 制位设为“0”
3.5储存空间管理-成组链接法
空闲表法和空闲链表法都不适用于大型文件系统,因为会使空闲表或空闲链表过大。UNIX中采用了成组链接法。
- 超级块存在于文件卷目录区,在开机时读入内存。
- 橙色部分表示下一组的空闲盘块数目。这一组的其中一个空闲盘块(如300)用来保存下下一组的空闲盘块信息。若没有下一组空闲盘块则盘块号设为-1。
- 分配时如果出现当前组空闲盘块数不够的问题需要把下一个超级块复制到当前超级块,以此类推。
- 回收时如果出现当前组空闲盘数量超出的问题需要把当前超级块复制到新回收的块,当前超级块更改内容
4.虚拟文件系统
虚拟文件系统的特点:
①向上层用户进程提供统一标准的系统调用接口,屏蔽底层具体文件系统的实现差异
②VFS要求下层的文件系统必须实现某些规定的函数功能,如:open/read/write。 一个新的文件系统想要在某操作系统上被使用,就必须满足该操作系统VFS的要求
为解决:存在的问题:不同的文件系统,表示文件数据结构各不相同。 打开文件后,其在内 存中的表示就不同
特点:③每打开一个文件,VFS就在主 存中新建一个 vnode,用统一的 数据结构表示文件,无论该文件存储在哪个文件系统。
注意:vnode 只存在于主存中,而 inode 既会被调入主存,也会在外存中存储
打开文件后,创建vnode,并将文件信息复制到vnode中,vnode的功能指针指向具体文件系统的函数功能。
5.文件系统挂载(mounting)
文件系统挂载(mounting),即文件系统安装/装载——如何将一个文件系统挂载到操作系统中?
文件系统在进程使用前必须先安装,也称挂载。
Window或MAC操作系统自动挂载创建的文件系统,Linux需要手动挂载,或者配置系统后自动挂载(编辑/etc/fstab文件)mount:VFS的挂载描述符; umount:卸载文件系统操作,保存文件,退出挂载点/挂载目录后才可执行。