文件系统——文件在磁盘中的分配方法
文件系统的结构可分为六层(从下到上)
- 1)设备层:寻找特定磁道,读写扇区
- 2)I/O控制层:在主内存和磁盘系统之间进行信息交流;告诉设备要寻找哪个磁道、哪个扇区,要执行什么操作
- 3)基本文件系统:向I/O控制层发送通用命令;管理内存缓冲区和保存各种文件系统、目录和数据块的缓存
- 4)文件组织模块:知道文件及其逻辑块和物理块;将逻辑地址转成物理地址
- 5)逻辑文件系统(用户可见):管理目录结构;根据给定文件名为文件组织模块提供所需信息
- 6)应用程序
文件系统的实现可分为三个主要层
- 1)文件系统接口
- 2)虚拟文件系统(VFS):定义了一个清晰的VFS接口,将文件系统的通用操作和实现分开
- 3)实现具体的文件系统类型或远程文件系统协议
文件的分配方法
1. 连续分配
- 在连续分配的方法下,目录的每一个项记录的是该文件首块的磁盘地址和连续的块数(即长度)。
支持顺序访问和随机访问。
1)存在外部碎片,浪费空间(出现的孔洞较多)。
2)文件无法增长。
解决的方法:当连续的空间不足以分配时,或者文件需要增长时,添加另一块连续空间(扩展),用指针链表将各个部分的连续空间链接起来。
2.链接分配
- 在链接分配的方法下,目录的每一个项记录的是该文件的第一个块和最后一个块的指针;
- 当读取文件时,只需要从第一个块开始,根据链表的顺序读,直到读到最后一个块。
优点
1)提高了空间利用率,不存在外部碎片。2)文件可增长(只要磁盘中还有空闲块)。
缺点
1)只支持顺序访问,不支持随机(直接)访问。
2)结构比较脆弱;当链表中的一个块丢失或损坏时,其后面的块也无法读取。
3)链表指针占用一定的空间。
文件分配表(FAT):链接分配的一个变种;在该表中存储了每一个磁盘块的条目,即每一个磁盘块的下一个块的块号(通过查看FAT的方法连续读取块,从而读取文件;而非采用链表指针的方式链接读取)。
3.索引分配
优点
1)支持直接(随机)访问。
2)不存在外部碎片的问题。
3)满足了文件的动态增长和删除的需求。
4)充分利用了外存空间。
缺点
1)每次读取需要访问两次磁盘块(一次访问索引块,一次访问具体物理块)。
2)索引块带来了系统的开销(索引块是固定大小的,初始化时其内存放的所有指针都是空指针。一个索引块中可能只有一两个指针非空,其他存放的指针都是空的(即该文件只分配到了一个或两个磁盘块))。
大多数计算机所使用的文件分配方法都是多级索引分配法。
多级索引分配:更高级的索引块存储低一级的所有索引块的指针,类似于二级页表对应一级页表。