文件系统实现

知识结构

  • 目录物理实现
    • 哈希
    • 线性表
  • 文件实现
    • 文件分配方式
      • 连续分配
      • 链接分配
        • 隐式
        • 显式
      • 索引分配
        • 链接
        • 多层索引
        • 混合索引
    • 文件存储空间管理
      • 空闲表法
      • 空闲链表法
      • 位示图法
      • 成组链接法

目录物理实现

按名搜索,按照路径找到相应表项;

线性列表

一个被存储的表项包括存储文件名和数据块指针,以此组织成线性表;
创建新文件需要搜索目录确定没有重名的文件,之后添加一个表项;

哈希

根据文件名映射到一个文件;

特点

  • 线性表:实现简单,采用链表还可以减少删除文件的时间,但是比较费时
  • 哈希:查找迅速,插入和删除简单,但是需要避免冲突;

文件实现

文件分配方式

连续分配

每个文件在磁盘上占有一组连续块,一个目录项包含开始块的地址和文件占有的块数目;

链接分配
  1. 隐式链接:每个文件对应一个磁盘块的链表,抽象为目录项就是,一个目录项包含文件第一块的指针和最后一块的指针
  2. 显式链接:使用一个FAT,其中每一项指示当前盘块所链接的下一盘块的盘块号,-1表示文件最后一块,-2表示空闲块(所以FAT其实也可以用来管理空闲磁盘存储空间),一般默认FAT在内存中;
索引分配

一般每个文件有一个索引块(索引节点、inode),也就是一个磁盘块,它存储着很多目录项(也就是索引),每一项用来指示一个逻辑块到物理块的地址;

  • 链接方案,为了支持大文件,使用多个磁盘块(索引块)链接在一起,来实现逻辑块号到物理块号的映射;
  • 多层索引,能支持大文件,又一定程度的减少了索引块的开销;第一层索引指向第二层索引,依次类推;
  • 混合索引;文件目录逻辑结构中,为了减少I/O磁盘开销,将FCB(一个目录项)划分为文件索引和索引节点,其中索引节点中使用的就是混合索引(13个地址项);
特点
  • 连续分配,支持顺序访问和随机访问,实现简单、存取速度最快(一次),但不支持文件扩展,并且存在外部碎片;
  • 链接分配,便于实现文件的扩展(增删改),隐式链接仅支持顺序访问,显示链接(FAT)支持随机、顺序访问,没有外部碎片;
  • 索引分配,支持顺序访问和随机访问,文件易于增删,没有外部碎片,但是索引表增加了系统存储开销,索引表的查找策略对系统效率影响较大;

空闲存储空间管理

空闲表法

连续分配,系统为外存上的所有空闲区建立一张空闲盘块表,表项包含空闲区的第一个盘块号,所占盘块数等;分配与内存的动态分配类似,为每个文件分配一块连续的存储空间,分配策略与内存动态分配一样,有首次适应算法、最佳适应算法等;

空闲链表法

所有空闲区形成一条链,形成的链有两种形式,空闲盘块链,每个结点是一个空闲盘块,空闲盘区链,每个结点是一个包含若干块盘块的空闲区,分配策略与内存的动态分配相似;

位示图法

用一个二进制位表示一个盘块是否被使用;

成组链接法

见课本,出现频率似乎非常低;

特点
  • 空闲表法:分配顺序的存储空间,不支持大文件系统,会使空闲表很大;
  • 空闲链表法:可以不连续,不支持大文件系统,会使空闲链表很大;分配回收较方便;
  • 成组链接法:支持大文件系统。
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值