实验四 文件系统原理与模拟实现
代码资源地址
Java实现的混合索引和成组链接法算法资源-CSDN文库
实验目的:
了解操作系统中文件系统的结构和管理过程,掌握经典的算法:混合索引与成组链接法等方法。
实验内容:
编程模拟实现混合索引和成组链接法算法;
实验步骤:
1.模拟混合索引的原理;
假设每个盘块16字节大小,每个盘块号占2字节:
设计支持混合索引算法的索引节点的数据结构;编程模拟实现混合索引算法。
测试:输入一个文件的长度,给出模拟分配占用的磁盘块的情况;输入一个需要访问的地址,计算该地址所在的盘块号。
2.模拟成组链接法的原理;
设系统具有7个可用磁盘块,每组3块。
编程模拟实现成组链接法。输入请求的磁盘块数,模拟成组链接分配;输入回收的磁盘块号,模拟成组链接回收。
测试:输入请求的磁盘块数,给出分配后的链接情况。输入回收的磁盘块号,给出回收后的链接情况。
实验过程:
下面是具体的实验过程:
-
混合索引法
(1)前10个指针指向可以直接访问的磁盘块。剩下3个指针指向间接块,即不包含数据的块,分别指向:一级间接块、二级间接块、三级间接块。
图1 混合所引法分配图
2.成组链接法
(1)分组:文件区中的所有空闲盘块被分成若干个组,如将每3个盘块作为一组。
(2)成链:由各组的第一个盘块链成一条链。将每一组含有的盘块总数N和该组所有的盘块号记入其前一组的第一个盘块中。
(3) 空闲盘块号栈:存放当前可用的一组空闲盘块的盘块号(最多为100个),以及栈中尚有的空闲盘块号数N,N兼作栈顶指针用。
图2 成组链接图示
3.混合索引法代码及测试
(1)代码目录结构图如图3所示。SuoYin.java为实现混合索引法的代码。
图3 混合索引代码结构目录
(2)混合索引法代码。
Java实现的混合索引和成组链接法算法资源-CSDN文库
(3)混合索引法测试。
1)直接索引测试。30/16=1…14,所以盘块号=1,偏移量=14。
图4 直接索引
2)一级索引测试。170/16=10…10,10>9(块号从0开始),所以启用了一级索引,位于一级索引的第0块,偏移量=10。
图5 一级索引
3)二级索引测试。1000/16=62…8,10+8<62<10+8+64启用了二级索引,位于二级索引的第44块,偏移量=8。
4)三级索引测试。1400/16=87…8,10+8+64<87<10+8+64+512启用了三级索引,位于三级索引的第5块,偏移量=8。
4.成组链接法代码及测试
(1)代码目录结构图如图8所示。GroupsLinking为实现成组链接法的代码。
图8 成组链接法代码结构目录
(2)GroupsLinking代码如下。可以实现成组链接法的分配和回收操作。
Java实现的混合索引和成组链接法算法资源-CSDN文库
(3)成组链接法的测试截图。
1)分配操作
图9 初始化效果图
图10 分配1个盘块
图11 第1组盘块分配完毕
图12 全部盘块分配完毕
2)回收操作
图13 回收一个盘块
图14 回收1组盘块
图15 退出系统
经过验证可知结果正确。