资源描述:
《实验三 文件系统空白空间管理-空白目录》由会员上传分享,免费在线阅读,更多相关内容在行业资料-天天文库。
1、操作系统原理实验三文件存储空间管理模拟学号班级姓名指导老师实验时间2014.6.5实验三文件存储空间管理模拟1.内容:模拟文件存储空间的管理,采用空白文件目录法和空白块链法实施空间分配。2.思想:文件存储空间管理是文件系统的重要内容。常用的管理思想有空白文件目录法、空白块链法和位示图法。本实验采用前两种方法进行空间分配。(1)空白文件目录法进行空间分配时,需要建立相关的数据结构,记录目前空白区域和已使用区域,假设开始时全部区域空闲。当有文件需要存储时,先检查空白文件目录,找到适合区域立即分配,并修改空白文件目录表和已使用区域分配表。为此需建立两张表格,
2、分别记录相关数据。空白文件目录表(初始)序号首空白块号空白快个数物理块号备注101000,1,2,……,98,99空白文件目录(中间)序号首空白块号空白块个数物理块号标志1242,3,4,5未分配2939,10,11未分配325525,26,27,28,29未分配439239,40未分配5………………未分配文件标识首块号文件块个数状态备注beta02占用Alpha63占用Toyota1213占用Sony309占用Ford504占用……………………已使用区域表(中间)上述两张表的数据在系统运行中是发生变化的。文件空闲区分配和释放算法如下图所示:图一文件空
3、闲区分配算法图二文件空闲区回收算法(2)空白块链法进行空间分配时,需要建立链表数据结构,将空闲块按顺序加以组织,分配和回收时在链首完成,同时建立文件目录,记录文件占用空间情况。文件标识首块号备注beta0Alpha6Toyota12Sony30Ford50…………源代码#include#include#includeintmaxid=4;//空白表数目intmaxnum=4;//文件个数//空白文件typedefstruct{intid;intfirstblock;intblocknum;int
4、lastblock;}Space;//分配文件typedefstruct{charflag[10];intfirstnum;intfullnum;intlastnum;}Full;//初始化分配Fullfull[20]={{"Bete",0,2,1},{"Aple",6,3,8},{"Toyo",12,13,24},{"Ford",30,9,38}};Spacefile[20]={{1,2,4,5},{2,9,3,11},{3,25,5,29},{4,39,62,100}};//分配打印voidfullprint(){printf("文件名t首块号
5、t文件块个数末块号");for(inti=0;i6、id,file[i].firstblock,file[i].blocknum,file[i].lastblock);}printf("当前空白区数目=%d",maxid);}voiddistribute(){//分配函数charS_File[10];//文件名intM;//申请块数inttemp;//被分配的首块号printf("文件分配");printf("输入文件名");scanf("%s",S_File);printf("输入申请块数");scanf("%d",&M);for(intf=0;f7、i=maxid){printf("本次无法分配");return;}if(file[f].blocknum>=M){temp=file[f].firstblock;printf("空白分区可用");if(file[f].blocknum==M){for(;f8、irstblock=file[f+1].firstblock;file[f].blocknum