Alex_McAvoy

想要成为渔夫的猎手

文件分配方式

【概述】

文件分配方式,就是在用户使用逻辑地址操作文件时,OS 负责实现文件从逻辑地址到物理地址的映射

而文件的物理结构与外存的组织方式有关,对于不同的外存组织方式,将形成不同的文件物理结构

因此,不同的外存组织方式就导致了映射的方式不同,目前常用的外存组织方式有:

  • 连续分配方式:为每个文件分配一片连续的磁盘空间,由此形成的物理结构是顺序式的文件结构
  • 链接分配方式:为每个文件分配不连续的磁盘空间,通过链接指针将一个文件的所有盘块链接在一起
  • 索引分配方式:形成索引式文件结构

【连续组织方式】

连续组织方式又称连续分配方式,其为每个文件分配一组相邻的盘块,逻辑文件中的记录顺序地存储到邻接的物理块中,使得逻辑文件中的记录顺序与存储器中文件占用盘块的顺序一致

该方式顺序访问相对容易,且速度较快,但要求为一个文件分配连续的存储空间会产生大量的外碎片,严重地降低了外存空间的利用率,且创建文件时要给出文件大小,存储空间利用率不高,不利于文件的动态增加和修改

【链接组织方式】

链接方式

采用链接组织方式时,将文件分配多个不连续的盘块,再通过盘块上的链接指针,将同属一个文件的多个离散的盘块链接成一个链表,由此形成链接文件

其有两种链接方式:

  • 隐式链接:在文件目录的每个目录项中,包含指向链接文件第一个盘块和最后一个盘块的指针,每个盘块拿出若干字节,记录指向下一盘块号的指针,即链接信息隐含记录在盘块数据中
  • 显示链接:将用于链接各物理块的指针显示地存放在内存的一张链表中,在整个磁盘中仅设置一张

对于隐式链接,其问题在于只能顺着盘块读取,对随机访问是低效的

对于显示链接,由于查记录的过程是在内存中进行的,因此其不仅显著地提高了检索速度,还大大减少了访问磁盘的次数

由于显示链接将分配给文件的所有盘块号都放在该表中,故将该表称为文件分配表(File Allocation Table,FAT)

FAT 表的相关计算

FAT 表的有关计算与下列三个公式有关:

  • $表项个数 = 盘块个数 = \frac{容量}{盘块大小}$
  • 表项大小:与盘块数量编号需要的位数有关
  • FAT 表大小 = 表项个数 * 表项大小

例如:一个 $1.2M$ 的磁盘,盘块 $512B$,文件系统采用 FAT12 格式,问 FAT 表大小是多少

由于磁盘容量为 $1.2M$,盘块 $512B$,因此,有:

采用 FAT12 格式,盘块数量编号所需位数为 $12$ 位

那么,有:

【索引组织方式】

对于链接方式来说,其不能支持高效的盘块直接存取,如果要对一个文件进行直接存取,仍需在 FAT 中顺序的查找许多盘块号。因此,FAT 需占用较大的内存空间,当磁盘容量较大时,FAT 可能要占用数 MB 以上的内存空间

因此,在系统运行时,只需要涉及部分文件,FAT 表无需全部调入内存,即对每个文件单独建索引表,记录所有分配给它的盘块号,同时,在建立文件时,分配一定的外存空间用于存放文件盘块索引表信息

索引形式适合大文件,对于中小型文件,需要若干链接即可,若用索引分配方式,用一个盘块存放少量索引信息反而不适用

若文件较大,存放索引表也需要多个盘块,如果索引盘块较多,则需要对索引盘块也采取索引方式管理,即多级索引

也就是说,若采用 $m$ 层索引结构,且顶层索引表未调入内存,那么访问一次数据块要进行 $m+1$ 次读磁盘

【三种方式的对比】

三种外存组织方式的对比如下表:

方式 访问第 $n$ 条记录 目录项 优点 缺点
连续组织方式 访问磁盘 $1$ 次 起始块号、文件长度 顺序存取访问快,支持随机访问 有外碎片,不利于文件扩展
隐式链接方式 访问磁盘 $n$ 次 起始块号、结束块号 无外碎片,文件扩展方便 只能顺序访问
显式链接方式 访问磁盘 $1$ 次 起始块号 可通过 FAT 实现随机访问 FAT 占据一定空间
索引组织方式 访问磁盘 $m+1$ 次 链接方式:第一个索引块块号
混合方式:顶级索引块块号
支持随机访问,且文件扩展方便 索引表占据一定空间,访问数据前要先读索引块
感谢您对我的支持,让我继续努力分享有用的技术与知识点!