目录
一、文件的物理结构--对非空闲磁盘块的管理
文件分配方式:
- 连续分配
- 链接分配 (隐式链接、显示链接)
- 索引分配
1、连续分配
总结:
连续分配方式要求每个文件在磁盘上占有一组连续的块。
优点:支持顺序访问和直接访问(即随机访问);连续分配的文件在顺序访问时速度最快。
缺点:不方便文件拓展;存储空间利用率低,会产生磁盘碎片。
2、链接分配
链接分配采取离散分配的方式,可以为文件分配离散的磁盘块。分为隐式链接和显示链接两种。
隐式链接
显示链接
链接分配总结
3、索引分配
索引分配允许文件离散地分配在各个磁盘块,系统会为每个文件建立一张索引表,索引表中记录了文件的各个逻辑块对应的物理块(索引表的功能类似于内存管理中的页表 -- 建立逻辑页面到物理页之间的映射关系)。
索引表存放的磁盘块称为索引块。文件数据存放的磁盘块称为数据块。
1、如何实现文件的逻辑块到物理块号的转换?
- 用户给出要访问的逻辑块号 i ,操作系统找到该文件对应的目录项(FCB)。
- 从目录项(FCB)中得知索引表的存放位置,将索引表从外存读入内存,并查找索引表可知 i 号逻辑块在外存中的存放位置
可见索引分配方式可以支持随机访问,文件扩展也很容易实现(只需要给文件分配一个空闲块,并增加一个索引表项即可),但是索引表需要占用一定的存储空间。
2、若每个磁盘块1KB,一个索引表项4B,则一个磁盘块只能存放256个索引项,如果一个文件的大小超过了256块,那么一个磁盘块是装不下文件的整张索引表的,如何解决?
- 链接方案
- 多层索引
- 混合索引
索引分配总结
二、文件的存储空间管理 --对空闲磁盘块的管理 --图
1、存储空间的划分与初始化
2、几种管理方法
1、空闲表法
如何分配磁盘块:与内存管理中的动态分区分配类似,为一个文件分配连续的存储空间。同样可采用首次使用、最佳适应、最坏适应等算法来决定要为文件分配哪个区间
如何回收磁盘块:与内存管理中的动态分区分配类似,当回收某个存储区时需要四种情况
- 回收区前后都没有相邻空闲区
- 回收区的前后都是空闲区
- 回收取前面时空闲区
- 回收区后面时空闲区
注意表项合并的问题
2、空闲链表法
空闲盘块区:以盘块为单位组成的一条空闲链
如何分配:若某个文件申请k个盘块,则从链头开始依次摘下k个盘块分配,并修改空闲链的链头指针
如何回收:回收的盘块依次挂到链尾,并修改空闲链的尾指针
空闲盘区链:以盘区为单位组成的一条空闲链
如何分配:若某个文件申请k个盘块,则可以采用首次适应、最佳适应等算法,从链头开始检索,按照算法规则找到符合要求的空闲盘区,分配给文件。若没有合适的连续空闲块,也可以将不同的盘区的盘块同时分配给一个文件,注意分配后可能要修改相应的链指针,盘区大小等数据
如何回收:与空闲表法回收一样
3、位示图法
如何分配:若文件需要k个块,①顺序扫描位示图,找到k个相邻或不相邻的 “0” ②根据字号、位号算出对应的盘块号,将相应的盘块分配给文件 ③将相应位设置位 “1”
如何回收:根据回收的盘块号计算相应的字号、位号;②将相应的位设置位 “0”
4、成组链接法
三、文件系统层次结构
现代操作系统有多种文件系统类型(如 FAT32、NTFS、ext2、ext3、ext4等),因此文件系统的层次结构也不尽相同。