文件系统的实现

文件系统的实现

操作系统中有很多种文件(FAT32、NTFS、ext2、ext3等),层次接口不尽相同。对于文件系统,要了解其实现的方法,目录是如何实现的、文件是如何实现的、存储空间管理。

1. 文件系统层次结构

用户调用接口->文件目录系统->存取控制验证->逻辑文件系统与文件信息缓冲区->物理文件系统->磁盘分配模块

如果要我们设计一个文件系统,不管是什么类型,都应该从这个流程出发。

2. 目录实现

有线性列表和哈希表两种方式,前者实现简单,查找效率低。后者查找效率要高于前者。

3. 文件实现

文件的实现研究的就是文件的物理结构,如何为文件分配磁盘块是一个问题。一般的方式有三种:

  • 连续分配
    线性排序,实现简单,存取速度快。文件不易于动态增加,可用空间不连续。也就是有外部碎片存在。
  • 链接分配
    较连续分配有更高的利用率,同时又分为隐式链接和显示链接。前者的缺点是无法直接访问盘块,只能通过指针顺序访问文件,以及盘块指针消耗了一定的存储空间。由于指针丢失,数据就访问不到了。显示链接用一张连接表来保存指针,称为FAT(文件分配表)
  • 索引分配
    可直接访问,无外部碎片。缺点:开销他,索引快大小无法权衡。

4. 文件存储空间管理

未完待续