Loading

33-文件的物理结构

文件的分配方式

操作系统对磁盘进行的管理

  1. 对非空闲磁盘块的管理
  2. 对空闲磁盘块的管理

文件的物理结构

在外存管理中,为了方便对文件的管理。文件的逻辑地址空间也被分为了一个一个的文件’块’.
因此文件的逻辑地址也可以表示为(逻辑块号,块内地址)的形式。
操作系统为文件分配存储空间都是以块为单位的
用户通过逻辑地址来操作自己的文件,操作系统要负责从逻辑地址到物理地址的映射

连续分配

思想:连续分配方式要求每个文件在磁盘上占有一组连续的块。
文件目录中记录存放的起始块号和长度。
物理块号=起始块号+逻辑块号
当然,还需要验证逻辑块号的合法性,支持直接访问。
读取某个磁盘块时,需要移动磁头。访问的两个磁盘块相隔越远,移动磁头所需的时间越多。连续分配的文件在顺序读/写速度最快
问题:

  1. 物理上的连续分配不方便文件的扩展
  2. 物理上的连续分配存储空间利用率低,会产生难以利用的磁盘碎片。可以用紧凑来处理碎片,但是需要耗费很大的时间代价。
    连续分配方式要求每个文件在磁盘上占有一组连续的块
    优点
  3. 支持顺序访问和随机访问
  4. 连续分配的文件在顺序访问时速度最快
    缺点
  5. 不方便文件扩展
  6. 存储空间利用率低,会产生磁盘碎片。

链接分配

链接分配采用离散分配的方法。

隐式链接

目录中记录了文件的起始块号和结束块号。除了文件的最后一个磁盘块外,每个磁盘块中都保存指向下一个盘块的指针,这些指针对用户是透明的。
结论
采用链式分配(隐式链接)方式的文件,只支持顺序访问,不支持随机访问,查找效率低。另外,指向下一个盘块的指针也需要耗费少量的存储空间。
优点

  1. 很方便文件扩展,不会有碎片问题,外存利用率高
    缺点
  2. 只支持顺序访问,不支持随机访问,查找效率低,指向下一个盘块的指针也需要耗费少量的存储空间。

显式链接

把用于链接文件各物理块的指针显式地存放在一张表中。即文件分配表(FAT,file Allocation Table)请添加图片描述
请添加图片描述
一个磁盘仅需要设置一张FAT,开机时,将FAT读入内存,并常驻内存。FAT的各个表项在物理上连续存储,且每一个表项长度相同,因此"物理块号"字段可以是一那还能的。请添加图片描述
结论
采用显式分配的文件,支持顺序访问,也支持随机访问,由于块号转换的过程不需要访问磁盘,因此相比于隐式链接来说,访问速度更快。
缺点:文件分配表需要占用一定的存储空间。

索引分配

索引分配允许文件离散地分配在各个磁盘块中,系统会为每个文件建立一张索引表,索引表中记录了文件的各个逻辑块对应的物理块(索引表的功能类似于内存管理中的页表)–建立逻辑页面到物理页之间的映射关系。索引表存放的磁盘块称为索引块。文件数据存放的磁盘称为数据块
注意:在显示链接的链式分配方式中,文件分配表FAT是一个磁盘对应一张。而索引分配方式中,索引表是一个文件对应一张。

如何查找

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


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


索引表太大

如果一个索引表在一个磁盘块装不下,有三种解决方案:

链接方案

如果一个索引表太大,一个索引块装不下,那么可以将多个索引块链接起来存放。
问题:低效请添加图片描述

多层索引

建立多层索引(原理类似于多级页表)。使第一层索引块指向第二层的索引块。还可以根据文件大小的要求再建立第三层、第四层索引块。
假设磁盘块大小是1kb,一个索引表项占4B,则一个磁盘块只能存放256个索引项。
若某文件采用两层索引,则该文件的最大长度可以到256x256x1KB=65536KB=64MB
可根据逻辑块号算出查找索引表的哪个表象
比如要访问1026号逻辑块,则:
1026/256=4,1026/256=2
因此可以先将一级索引表调入内存,查询4号表项,将其对应的二级索引表调入内存,再查询二级索引表的表项即可知道1026号逻辑块存放的磁盘块号了。访问目标数据块,需要3次磁盘I/O.
若采用3层索引结构,那么需要256x256x256x1kb=16GB,需要4次磁盘I/O
若采用K层索引结构,且顶级索引表未调入内存,则访问一个数据块只需要K+1次读磁盘操作。

混合索引

多种索引方式的结合:例如一个文件的顶级索引表中,即包含直接地址索引,又包含一级间接索引,还包含二级间接索引请添加图片描述

posted @ 2023-02-04 10:03  nliuc  阅读(136)  评论(0编辑  收藏  举报