操作系统 --文件系统实现(十四)

目录

一、文件的物理结构(文件分配方式)--对非空闲磁盘块的管理

 1、连续分配

2、链接分配

隐式链接:

显示链接:

链接分配总结

3、索引分配

索引分配总结

二、文件的存储空间管理 --对空闲磁盘块的管理 --图

存储空间的划分与初始化

几种管理方法

空闲表法

空闲链表法

位示图法

成组链接法

三、文件系统层次结构


一、文件的物理结构(文件分配方式)--对非空闲磁盘块的管理


  • 连续分配
  • 链接分配 隐式链接 显示链接
  • 索引分配

 

 1、连续分配

连续分配方式要求每个文件在磁盘上占有一组连续的块

 总结:

优点:支持顺序访问和直接访问(即随机访问);连续分配的文件在顺序访问时速度最快

缺点:不方便文件拓展;存储空间利用率低,会产生磁盘碎片

2、链接分配

链接分配采取离散分配的方式,可以为文件分配离散的磁盘块。分为隐式链接和显示链接两种

隐式链接:

除了文件的最后一个盘块之外,每个盘块中都存有指向下一个盘块的指针。文件目录包括文件的第一块的指针和最后一块的指针

优点:很方便拓展,不会有碎片问题,外存利用率高

缺点:只支持顺序访问,不支持随机访问,查找效率低,指向下一个盘块的指针也需要消耗少量的存储空间

显示链接:

结论:

显示链接支持顺序访问,也支持随机访问,由于块号转换的过程不需要访问磁盘,因此相比于隐式链接,访问速度块很多

链接分配总结

3、索引分配

索引分配允许文件离散地分配在各个磁盘块,系统会为每个文件建立一张索引表,索引表中记录了文件的各个逻辑块对应的物理块(索引表的功能类似于内存管理中的页表 -- 建立逻辑页面到物理页之间的映射关系)

索引表存放的磁盘块称为索引块。文件数据存放的磁盘块称为数据块

1、如何实现文件的逻辑块到物理块号的转换?

  1. 用户给出要访问的逻辑块号 i ,操作系统找到该文件对应的目录项(FCB)
  2. 从目录项(FCB)中得知索引表的存放位置,将索引表从外存读入内存,并查找索引表可知 i 号逻辑块在外存中的存放位置

可见索引分配方式可以支持随机访问,文件扩展也很容易实现(只需要给文件分配一个空闲块,并增加一个索引表项即可)

但是索引表需要占用一定的存储空间

2、若每个磁盘块1KB,一个索引表项4B,则一个磁盘块只能存放256个索引项,如果一个文件的大小超过了256块,那么一个磁盘块是装不下文件的整张索引表的,如何解决?

  • 链接方案
  • 多层索引
  • 混合索引

 

 

索引分配总结

二、文件的存储空间管理 --对空闲磁盘块的管理 --图


存储空间的划分与初始化

几种管理方法

空闲表法

如何分配磁盘块:与内存管理中的动态分区分配类似,为一个文件分配连续的存储空间。同样可采用首次使用、最佳适应、最坏适应等算法来决定要为文件分配哪个区间

如何回收磁盘块:与内存管理中的动态分区分配类似,当回收某个存储区时需要四种情况

  • 回收区前后都没有相邻空闲区
  • 回收区的前后都是空闲区
  • 回收取前面时空闲区
  • 回收区后面时空闲区

注意表项合并的问题

空闲链表法

空闲盘块区:盘块为单位组成的一条空闲链

如何分配:若某个文件申请k个盘块,则从链头开始依次摘下k个盘块分配,并修改空闲链的链头指针

如何回收:回收的盘块依次挂到链尾,并修改空闲链的尾指针

空闲盘区链:盘区为单位组成的一条空闲链

如何分配:若某个文件申请k个盘块,则可以采用首次适应、最佳适应等算法,从链头开始检索,按照算法规则找到符合要求的空闲盘区,分配给文件。若没有合适的连续空闲块,也可以将不同的盘区的盘块同时分配给一个文件,注意分配后可能要修改相应的链指针,盘区大小等数据

如何回收:与空闲表法回收一样

位示图法

如何分配:若文件需要k个块,①顺序扫描位示图,找到k个相邻或不相邻的 “0” ②根据字号、位号算出对应的盘块号,将相应的盘块分配给文件 ③将相应位设置位 “1”

如何回收:根据回收的盘块号计算相应的字号、位号;②将相应的位设置位 “0”

成组链接法

三、文件系统层次结构


现代操作系统有多种文件系统类型(如 FAT32、NTFS、ext2、ext3、ext4等),因此文件系统的层次结构也不尽相同

猜你喜欢

转载自blog.csdn.net/qq_40949465/article/details/89000388
今日推荐