收藏 分销(赏)

操作系统文件管理实验报告.doc

上传人:快乐****生活 文档编号:4606480 上传时间:2024-10-05 格式:DOC 页数:20 大小:1.11MB
下载 相关 举报
操作系统文件管理实验报告.doc_第1页
第1页 / 共20页
操作系统文件管理实验报告.doc_第2页
第2页 / 共20页
操作系统文件管理实验报告.doc_第3页
第3页 / 共20页
操作系统文件管理实验报告.doc_第4页
第4页 / 共20页
操作系统文件管理实验报告.doc_第5页
第5页 / 共20页
点击查看更多>>
资源描述

1、 实 验 报 告 课程名称 计算机操作系统 实验名称 文件管理 班 级 学 号 姓 名 成 绩 指导教师 赵安科 实验日期 2015年6月18日 一 实验题目:文件管理二 实验内容:模拟文件存储空间的管理,采用空白文件目录法和空白块链法实 施空间分配。三 实验说明:文件存储空间管理是文件系统的重要内容。常用的管理思想有空白文件目录法、空白块链法和位示图法。本实验采用前两种方法进行空间分配。(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占用已使用区域表(中间)上述两张表的数据在系统运行中是发生变化的。文件空闲区分配和释放算法如下图所示:图一 文件空闲区分配算法图二 文件空闲区回收算法(2) 空

3、白块链法进行空间分配时,需要建立链表数据结构,将空闲块按顺序加以组织,分配和回收时在链首完成,同时建立文件目录,记录文件占用空间情况。文件标识首块号备注beta0Alpha6Toyota12Sony30Ford50四 实验要求:(1)自拟模拟数据演示运行结果(假定系统可用空闲块数为100)。为便于检查,建立和删除文件顺序如下:分配文件:F1,3分配文件:F2,5分配文件:F3,3分配文件:F4,8分配文件:F5,4分配文件:F6,2删除文件:F1删除文件:F2分配文件:F7,6删除文件:F3分配文件:F8,4删除文件:F5分配文件:F9,4每完成一个文件的分配和删除后,显示空白文件目录当前内容

4、。(2) 空白文件目录法必须完成,空白块链法选做。五 程序中所用数据结构及说明:实验中,定义了两个结构体类型SPACE(空白区)和OCCUPY(占用区),其结构如下:struct SPACE/空白区int id;/空白文件序号 int first;/首空白块号int num;/空白块个数int block30;/物理块号;struct OCCUPY/占用区char filename20;/文件名int firstf;/首块号int numf;/文件块个数int blockf30;/物理块号;分别用来描述空白区和占用区的相关属性,再定义它们的结构数组OCCUPY o20和SPACE s20用来表

5、示两个表(存储相关数据),定义变量smax和omax分别用来初始空白区文件数目和初始占用区文件数目,函数spaceprint和函数occupyprit分别用来显示空白区和占用区的情况,函数fenpei和函数shanchu分别用来分配文件和删除文件,随用户的选择可动态的分配和删除文件,并且将每次执行的结果显示出来(即空白区情况和占用区情况),用户根据两个表的情况可实时观察到操作所执行的结果及过程,最终比较实验结果可进一步加深和理解空白目录法的过程和本质。六 程序清单及描述:#include#includeint smax=1;/初始空白区文件数目int omax=0;/初始占用区文件数目stru

6、ct SPACE/空白区int id;/空白文件序号 int first;/首空白块号int num;/空白块个数int block30;/物理块号;struct OCCUPY/占用区char filename20;/文件名int firstf;/首块号int numf;/文件块个数int blockf30;/物理块号;/初始化OCCUPY o20;SPACE s20=1,0,100,0,1,2,3,98,99;void bubble(int a,int n)/冒泡法排序int i,j,t,flag=1;for(i=1;in&flag=1;i+)flag=0;for(j=0;jaj+1)fla

7、g=1;t=aj;aj=aj+1;aj+1=t;/空白区输出显示void spaceprint()int a20;for(int j=0;jsmax;j+)/将首块号排序aj=sj.first; bubble(a,smax);cout空白文件序号t首空白块号t空白块个数t物理块号n;for(int z=0;zsmax;z+)for(int i=0;ismax;i+)if(az=si.first)/按首块号从小到大顺序输出coutz+1ttsi.firstttsi.numtt;coutsi.firstsi.first+si.num-1;coutendl;cout当前空白文件数目为=smaxend

8、l; coutn;/占用区输出显示void occupyprint()cout文件名t首块号t文件块个数t物理块号n;for(int i=0;iomax;i+)coutoi.filenametoi.firstftoi.numftt;coutoi.firstfoi.firstf+oi.numf-1;coutendl;cout当前文件数目为=omaxendl;void fenpei()/分配文件char filen20; /文件名int size;/申请块数int firsti=0;/中间过渡临时变量cout您执行的操作为:文件分配n;coutfilen;coutsize;for(int i=0;

9、ismax;i+)for(int j=0;jomax;j+)if(!strcmp(filen,oj.filename)cout文件已分配过!n;return;if(size=0)cout=smax)cout此次分配失败!n;return;if(si.num=size)/空白块个数等于申请块个数firsti=si.first;/修改空白区for(i;ismax-1;i+)si.first=si+1.first;si.num=si+1.num;strcpy(oomax.filename,filen);/修改占用区oomax.firstf=firsti;oomax.numf=size;omax+;c

10、outsize)/空白块个数大于申请块个数firsti=si.first;/修改空白区si.first+=size;si.num-=size;strcpy(oomax.filename,filen);/修改占用区oomax.firstf=firsti;oomax.numf=size;omax+;cout文件分配成功!n;break;spaceprint();occupyprint();void shanchu()/删除文件char filen20;/文件名int f;/文件首块号int n;/文件所占的块数cout您执行的操作为:文件删除n;coutfilen;int exits=1;/标记,

11、判断文件是否存在for(int i=0;iomax;i+)if(!strcmp(oi.filename,filen)/文件存在exits=0;int f1=0;/标记上临int f2=0;/标记下临int p1,p2;/存储上临、下临的序号f=oi.firstf;n=oi.numf;for(i;iomax-1;i+)/修改占用区oi=oi+1;omax-;for(int j=0;jsmax;j+)/修改空白区if(sj.first+sj.num=f)/上临f1=1;p1=j;if(sj.first=f+n)/下临f2=1;p2=j;/四种情况if(f1&!f2)/有上临无下临sp1.num+=

12、n;if(!f1&f2)/无上临有下临sp2.first=f;sp2.num+=n;if(f1&f2)/既有上临又有下临sp1.num=sp1.num+n+sp2.num;for(p2;p2smax-1;p2+)sp2=sp2+1;sp2.id=p2+1;smax-;if(!f1&!f2)/既无上临也无下临ssmax.id=smax+1;ssmax.first=f;ssmax.num=n;smax+;if(exits)/文件不存在cout输入文件名有误!n;spaceprint();occupyprint();int main()spaceprint();occupyprint();while

13、(1)char ch;cout*n;cout您可以选择以下操作:; cout1.分配文件tch; if(ch=1) fenpei();if(ch=2)shanchu();if(ch!=1&ch!=2)cout输入有误,请重新输入!n;return 0;七 执行结果:实验结果分析:对比实验运行结果,文件的分配过程和文件的删除过程与人工分析的结果一致,实验基本达到预期的目标。八 总结与体会:在本次试验的过程中,由于前期的理论准备不足和对课本知识的掌握的不足,在编写程序的过程中,考虑的情况不全面,所写的程序结构较混乱而且可读性不强,错误较多,尤其是文件分配过程中修改空白区和占用区,文件删除过程中上下临的合并等问题,最后通过对课本的研读和画图的分析才找到错误之处进行修改得到正确结果。通过本次实验,使我对空白文件目录法有了一个深入的了解和应用,空白文件目录法是文件管理最基本的方法,其在早期的文件管理中被使用到,但这种方法仅当有少量空白文件时才有较好的效果,如果存储空间中有大量的小的空白文件,则使该目录变得很大,因而效率大为降低。其次,这种管理技术仅适用于连续文件,有一定的局限性。最后,通过本次实验,锻炼了自己的编程能力,发现了自己编程知识上的不足,和专业知识的不足,希望在以后的学习中,能注重基本知识和基本能力的培养,以使自己有一个长足的发展。20 / 20

展开阅读全文
相似文档                                   自信AI助手自信AI助手
猜你喜欢                                   自信AI导航自信AI导航
搜索标签

当前位置:首页 > 包罗万象 > 大杂烩

移动网页_全站_页脚广告1

关于我们      便捷服务       自信AI       AI导航        获赠5币

©2010-2024 宁波自信网络信息技术有限公司  版权所有

客服电话:4008-655-100  投诉/维权电话:4009-655-100

gongan.png浙公网安备33021202000488号   

icp.png浙ICP备2021020529号-1  |  浙B2-20240490  

关注我们 :gzh.png    weibo.png    LOFTER.png 

客服