(王道408考研操作系统)第四章文件管理-第一节4:文件物理结构(文件分配方式)

本文详细介绍了文件管理中的三种主要文件分配方式:连续分配、链接分配(隐式链接与显式链接)和索引分配。讨论了各种分配方式的优缺点,如连续分配在顺序访问时速度快但拓展不便,链接分配避免碎片但不支持随机访问,而索引分配支持随机访问并易于拓展。同时,文章提到了解决大文件索引问题的链接方案、多层索引和混合索引策略。
摘要由CSDN通过智能技术生成

文件的物理结构是指如何为文件分配磁盘块,主要有如下三种分配方法

  • 连续分配
  • 链接分配
  • 索引分配

类似于内存分页,磁盘中的存储单元也会被划分为一个个的,很多操作系统中,块的大小与内存块、页面的大小相同
在这里插入图片描述
这一个块看起来虽然很简单,但是里面有很多东西。如下是一个块
在这里插入图片描述

  • Super Block超级块,存放的是文件系统本身的结构信息。记录的信息有block和inode(后面会说)的总量,未使用的block和inode的数量,一个block和inode的大小,最近一次挂载的时间,最近一次写入的时间等等。一旦破坏了Super Block那么整个文件系统的结构就被破坏了
  • Group Descriptor Table块组描述符,描述了块组属性信息
  • inode TableData block:inode Table中存储的就是Inode,每个inode会映射到对应data blocks。一个文件就对应一个inode,inode table有多大就有多少个inode也就可以最多存放多少个文件。有时候会出现一种情况,就是硬盘空间还有,却无法创建文件,这种原因就是文件数太多,但是每个文件又太小,将inode Table给占满了
  • inode Bitmap:上面两个很好理解,但是有一个问题:如何保证inode不重复?那么这就要靠inode Bitmap,本质是位图,如果inode Table里能存十万个inode,那么inode bitmap就是十万个0,也就是0000…000000(这10万个0占据的空间其实很小),创建文件时,就去遍历这个位图,只要位置处是0,那么就可以申请一个对应的inode
  • Block Bitmap:既然inode有位图,那么Block也有位图,其原理和上面的是相似的,只要位图某个位不为0,就能在块中申请空间,然后将对应位图的位传递给inode Table 和 Data block就能建立对应关系。比如第三个位是1,那么Date blocks=inode Table(3)

于是上面的文字信息可以用下面这张图解释
在这里插入图片描述

内存与磁盘之间的数据交换都是以块为单位进行的,也即每次读入一块或每次写入一块
在这里插入图片描述
从用户角度上来看,面对的文件是一个统一的整体,但是文件被分块后,所有块可能会被离散地分配到磁盘的不同位置处,那么这里就又涉及到了逻辑地址和物理地址,因此操作系统就要负责从逻辑地址到物理地址的映射

  • 逻辑地址:文件的逻辑地址可以表示为 (逻辑块号,块内地址)
  • 物理地址:某一块真实存放在磁盘中的位置

在这里插入图片描述

一:连续分配

连续分配:连续分配要求每个文件在磁盘上占有一组连续的块。支持顺序访问和直接访问,也即随机访问。且在顺序读/写时速度最快(因为磁头移动时间短)
在这里插入图片描述

由于是连续分配,所以各个块的相对地址是没有改变的,因此当用户给出要访问的逻辑块号时,只要操作系统找到该文件对应的目录项,那么物理块号=起始块号+逻辑块号
所以文件目录中需要记录起始块号长度(也即整个文件占用多少个块)

在这里插入图片描述
不过,由于连续分配要求每个文件占用的块是连续的,所以在拓展时如果剩余连续的块不够了就会产生迁移,十分不方便

在这里插入图片描述
另外连续分配还会使存储空间利用率变低,产生一些很难利用的细小磁盘碎片
在这里插入图片描述

二:链接分配

连续分配:链接分配采取离散分配的方式,可以为文件分配离散的磁盘块。分为以下两种

  • 隐式链接
  • 显式链接

A:隐式链接

隐式链接中,每个文件对应一个磁盘块的链表;磁盘块分布在磁盘的任何地方,除最后一个块外,其余块都有指向下一个块的指针,这些指针对用户来说是透明的。目录中则会记录文件存放的起始块号和结束块号。该种方式易于文件拓展,并且所有空闲磁盘块都可以被利用,不会有碎片问题,外存利用率高

在这里插入图片描述

采用这种方式,当用户想要访问逻辑块号 i i i时,就必须从0号块开始依次顺序地访问到第 i i i-1块,所以它不支持随机访问

B:显式链接

在显式链接中,会把所有指针从每个物理块中提取出来,显式的存放在内存的一张链接表中,该表在整个磁盘中仅设置一张,开机时将其读入内存,并常驻内存,称之为文件分配表(FAT)。同时在目录中仅需要记录文件的起始块号。FAT的各个表项在物理上是连续分配的,因而物理块号字段是隐含的。采用这种分配方式的文件,即支持顺序访问也支持随机访问,同时也不会产生外部碎片

在这里插入图片描述

当用户想要访问逻辑块号 i i i时,操作系统先找到FCB,然后从目录项中查找起始块号,然后查询FAT,就能找到 i i i号逻辑块对应的物理块了。并且逻辑块号转换为物理块号的过程不需要读磁盘操作

三:索引分配

(1)基本概念

索引分配:索引分配允许文件离散地分配在各个磁盘块中,系统会为每个文件建立一张索引表,索引表中记录了文件的各个逻辑块对应的物理块,索引表的功能就像书的目录一样,需要哪个章节的内容,顺着目录查就可以了。索引表存放的磁盘块称为索引块,文件数据存放的磁盘块称为数据块

  • FAT是一个磁盘对应一张,而索引表是一个文件对应一张

在这里插入图片描述
采用索引方式的文件需要在FCB中记录自己的索引块号
在这里插入图片描述
由于可以用固定的长度表示物理块号,所以索引表中的逻辑块号可以是隐含的
在这里插入图片描述
在该种方式下,当用户想要访问某逻辑块时,操作系统首先找到该文件对应的FCB,然后从目录项中可查得索引表的存放位置,将索引表读入内存后,再查索引表即可找到该逻辑块号在外存中的存放位置。所以索引分配方式支持随机访问,并且文件拓展也很容易实现


(2)一个问题

索引分配方式最大的一个问题就是索引块的大小,索引块理应尽可能的小,但是索引块太小的话就无法支持大文件了(反过来的意思就是当文件太大时,一个磁盘块是装不下索引表的),所以常常会采用下面的机制来解决这个问题

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

A:链接方案

链式索引块:如果索引表太大,那么可以将多个索引块链接起来存放,除最后一个索引块外,每个索引块最后都会留有一个指向下一个索引块的指针
在这里插入图片描述
如下
在这里插入图片描述
当然这种方式的缺点也显而易见,由于是靠指针来维护,无非会产生以下问题

  • 如果索引块太多,那么访问最后一个索引块就必须要前面的所有索引块都加载进来
  • 如果某个指针损坏了,那么后面的数据自然就无法读取了

B:多层索引

多层索引:类似于多级页表。使第一层索引块指向第二层的索引块。如有需要,还可以建立更高层的索引块

  • 注意:和多级页表一样,每层索引表的大小不能超过一个磁盘块

在这里插入图片描述
如下,在FCB中需要记录顶层索引表的块号
在这里插入图片描述

C:混合索引

混合索引:是多种索引分配方式的结合体。在混合索引中,一个文件的顶级索引表中,即包含直接地址索引(直接指向数据块),又包含一级间接索引(指向单层索引表),还可能包含两级间接索引(指向两层索引表)

在这里插入图片描述

  • 混合索引是考察重点,其中会涉及以下考察点。具体细节将在王道课习题中详细阐述
    在这里插入图片描述

文件分配方式大总结

在这里插入图片描述

  • 0
    点赞
  • 2
    收藏
    觉得还不错? 一键收藏
  • 打赏
    打赏
  • 1
    评论
评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

快乐江湖

创作不易,感谢支持!

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

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

余额充值