文件的物理结构(分配方式) - wolai 笔记

1. 连续分配

方式
  • 为文件分配的必须是连续的磁盘块(逻辑、物理都连续)
  • 文件目录中记录存放的起始块号和长度,用于地址转换
  • 物理块号 = 起始地址 + 逻辑块号(判断是否合法)
目录项内容:起始块号、文件长度
优点:支持顺序访问和随机访问,顺序存取速度块
缺点:不利于文件拓展,存储空间的利用率低,会产生磁盘碎片

2. 链接分配

采用离散分配的方式,可以为文件分配离散的磁盘块,消除了外部碎片。

2.1隐式链接

方式
  • 除文件的最后一个盘块之外,每个盘块中都存有指向下一个盘块的指针
  • 存取i号逻辑块,总共需要i+1次磁盘I/O
目录项内容:起始块号、结束块号
优点:可解决碎片问题,外存利用率高,文件拓展实现方便
缺点:只能顺序访问,不能随机访问,查找效率低,指向下一个盘块的指针也需要耗费少量存储空间

2.2显示链接

方式
  • 建立一张文件分配表(FAT),显式记录盘块的先后关系
  • 一个磁盘只有一张,开机后FAT常驻内存
  • FAT:(物理块号,下一块)
  • FAT各表项在物理上连续存储,且每一个表项长度相同
目录项内容:起始块号
优点
  • 除拥有隐式链接的优点之外,还可通过查询内存中的FAT实现随机访问
  • 支持顺序访问,可支持随机访问,访问过程不需要访问磁盘,访问速度快
  • 不会产生外部碎片,也可以很方便的对文件进行扩展
缺点:FAT需要占用一定的存储空间

3.索引分配

3.1方式

  • 允许文件离散的分配在各个磁盘块中,系统建立索引表,索引表中记录文件的各个逻辑块对应的物理块
  • 索引表(逻辑块号,物理块号)存放的磁盘块称为索引块;文件数据存放的磁盘块称为数据库
  • 每一个文件对应一张索引表,可以用固定长度表示物理块号,索引表中“逻辑块号”可以隐含
  • 为文件数据块建立索引表。若文件太大,可采用链接方案、多层索引、混合索引

3.2目录项内容

链接方案记录的是第一个索引块的块号,多层/混合索引记录的是顶级索引块的块号

3.3索引项太大

链接方案

  • 分配多个索引块,将多个索引块链接起来存放
  • 文件太大时,链接的索引块较多,读取靠后的索引块,IO操作较多

多层索引

  • 类似于多级页表
  • 各层索引表大小不能超过一个磁盘块的容量
  • 采用K层索引结构,且顶级索引表未调入内存,访问一个数据块只需要 K+1 次读磁盘操作
  • 小文件,访问也需要K+1次读磁盘

混合索引

  • 即包含直接地址索引,由包含一级间接索引,还包含二级间接索引
  • 对于小文件,只需较少的读磁盘次数就可以访问目标数据块

优点

支持随机访问,易于实现文件的扩展

缺点

索引表需占用一定的存储空间。访问数据块前需要先读入索引块。若采用链接方案,查找索引块时可能需要很多此读磁盘操作

4. 补充

4.1磁盘块

  • 类似于内存分页,磁盘中的存储单元也会被分为一个个“块/磁盘块/物理块”
  • 很多操作系统中,磁盘块的大小与内存大小、页面大小相同

4.2文件块

  • 文件的逻辑地址空间也被分为一个一个的文件“块”
  • 文件的逻辑地址可以表示为(逻辑块号,块内地址)的形式
  • 操作系统为文件分配存储空间都是以块为单位的
  • 用户通过逻辑地址来操作自己的文件,操作系统要负责实现从逻辑地址到物理地址的映射

5.文件分配方式比较


访问第n条记录优点缺点
连续分配需访问磁盘1顺序存取时速度快,文件定长时可根据文件起始地址及记录长度进行随机访问文件存储要求连续的存储空间,会产生碎片,不利于文件的动态扩充
链接分配需访问磁盘n可解决外存的碎片问题,提高外存空间的利用率,动态增长较方便只能按照文件的指针链顺序访问,查找效率低,指针信息存放消耗外存空间
所有分配m级需访问磁盘m+1可以随机访问,文件易于增删索引表增加存储空间的开销,索引表的查找策略对文件系统效率影响较大


Comment