收藏 分享(赏)

实验三 文件系统空白空间管理-空白目录.doc

上传人:hwpkd79526 文档编号:7145631 上传时间:2019-05-07 格式:DOC 页数:14 大小:846.50KB
下载 相关 举报
实验三 文件系统空白空间管理-空白目录.doc_第1页
第1页 / 共14页
实验三 文件系统空白空间管理-空白目录.doc_第2页
第2页 / 共14页
实验三 文件系统空白空间管理-空白目录.doc_第3页
第3页 / 共14页
实验三 文件系统空白空间管理-空白目录.doc_第4页
第4页 / 共14页
实验三 文件系统空白空间管理-空白目录.doc_第5页
第5页 / 共14页
点击查看更多>>
资源描述

1、操作系统原理实验三 文件存储空间管理模拟学 号 班 级 姓 名 指导老师 实验时间 2014.6.5 实验三 文件存储空间管理模拟1内容:模拟文件存储空间的管理,采用空白文件目录法和空白块链法实施空间分配。2思想:文件存储空间管理是文件系统的重要内容。常用的管理思想有空白文件目录法、空白块链法和位示图法。本实验采用前两种方法进行空间分配。(1)空白文件目录法进行空间分配时,需要建立相关的数据结构,记录目前空白区域和已使用区域,假设开始时全部区域空闲。当有文件需要存储时,先检查空白文件目录,找到适合区域立即分配,并修改空白文件目录表和已使用区域分配表。为此需建立两张表格,分别记录相关数据。空白文

2、件目录表(初始)空白文件目录(中间)序号 首空白块号 空白快个数 物理块号 备注1 0 100 0,1,2,98,99序号 首空白块号 空白块个数 物理块号 标志1 2 4 2,3,4,5 未分配2 9 3 9,10,11 未分配3 25 5 25,26,27,28,29 未分配4 39 2 39,40 未分配5 未分配文件标识 首块号 文件块个数 状态 备注beta 0 2 占用Alpha 6 3 占用Toyota 12 13 占用Sony 30 9 占用Ford 50 4 占用 已使用区域表(中间)上述两张表的数据在系统运行中是发生变化的。文件空闲区分配和释放算法如下图所示:图一 文件空闲

3、区分配算法图二 文件空闲区回收算法(2)空白块链法进行空间分配时,需要建立链表数据结构,将空闲块按顺序加以组织,分配和回收 时在链首完成,同时建 立文件目录,记录文件占 用空间情况。源代码#include#include#includeint maxid=4; /空白表数目int maxnum=4;/文件个数/ 空白文件typedef structint id;int firstblock;int blocknum;int lastblock;Space;/ 分配文件typedef struct char flag10;int firstnum;文件标识 首块号 备注beta 0Alpha 6

4、Toyota 12Sony 30Ford 50 int fullnum;int lastnum;Full;/初始化分配Full full20=“Bete“,0,2,1,“Aple“,6,3,8,“Toyo“,12,13,24,“Ford“,30,9,38;Space file20=1,2,4,5,2,9,3,11,3,25,5,29,4,39,62,100;/分配打印void fullprint()printf(“文件名t 首块号 t 文件块个数 末块号n“);for(int i=0;i=maxid)printf(“本次无法分配“);return ;if(filef.blocknum=M)te

5、mp=filef.firstblock;printf(“空白分区可用n“);if(filef.blocknum=M)for(;fmaxid-1;f+)filef.firstblock=filef+1.firstblock;filef.blocknum=filef+1.blocknum;filef.lastblock=filef+1.lastblock;maxid-;elsefilef.blocknum-=M;filef.firstblock+=M;strcpy(fullmaxnum.flag,S_File);fullmaxnum.firstnum=temp;fullmaxnum.fullnum

6、=M;fullmaxnum.lastnum=fullmaxnum.firstnum+fullmaxnum.fullnum-1;maxnum+=1;break;fileprint();fullprint();void release() /释放函数printf(“删除一个文件,释放空间n“);int F;/删除文件首块号int B;/删除文件快数int L;/删除文件末块char s_file10;printf(“输入删除文件的文件名=“);scanf(“%s“,s_file);int isrelease=0;for(int i=0;imaxnum;i+)if(!strcmp(s_file,fu

7、lli.flag) isrelease=1;int flag1=0;/上邻标记int page1=0;int flag2=0; /下邻标记int page2=0;L=fulli.lastnum;F=fulli.firstnum;B=fulli.fullnum;for(;imaxnum-1;i+)fulli=fulli+1;maxnum-;for(int i=0;imaxid;+i)if(filei.lastblock+1)=F)flag1=1;page1=i;if(filei.firstblock-1)=L)flag2=1;page2=i;if(flag1filepage1.lastblock

8、=L;if(flag1filepage1.lastblock=filepage2.lastblock;for(;page2maxid;page2+)filepage2=filepage2+1;filepage2.id=page2+1;maxid-;if(!flag1)filemaxid.firstblock=F;filemaxid.blocknum=B;filemaxid.lastblock=L;maxid+;if(!flag1)filepage2.firstblock=F;if(isrelease=0)printf(“输入文件有误n“);fileprint();fullprint();int main()fileprint();fullprint();while(1) printf(“请选择 A:分配,B:释放,C:退出n“);char s;scanf(“%c“,switch(s)case A:distribute();break;case B:release();break;case C:exit(-1);default:printf(“输入有误,重新输入n“);getchar();return 0;实验结果打印图(0)初始化图(1)分配的块数小于当前块数图(2)分配的块数等于当前空白块数图(3)无上邻,有下邻图(4)有上邻,有下邻图(5)有上邻,无下邻图(6)无上邻,无下邻

展开阅读全文
相关资源
猜你喜欢
相关搜索

当前位置:首页 > 企业管理 > 管理学资料

本站链接:文库   一言   我酷   合作


客服QQ:2549714901微博号:道客多多官方知乎号:道客多多

经营许可证编号: 粤ICP备2021046453号世界地图

道客多多©版权所有2020-2025营业执照举报