模拟实现用位示图法管理文件存储空间的分配与回收_第1页
模拟实现用位示图法管理文件存储空间的分配与回收_第2页
模拟实现用位示图法管理文件存储空间的分配与回收_第3页
模拟实现用位示图法管理文件存储空间的分配与回收_第4页
模拟实现用位示图法管理文件存储空间的分配与回收_第5页
已阅读5页,还剩20页未读 继续免费阅读

下载本文档

版权说明:本文档由用户提供并上传,收益归属内容提供方,若内容存在侵权,请进行举报或认领

文档简介

1、TAIYUANUNIVERSITYOFSCIENCEANDTECHNOLOGY计算机科学与技术学院操作系统综合试验报告学年第一学期)(2016/2017学生姓名:,学生专业:网络工程学生班级:网络班2学生学号:指导教师:月122016年12日范文word计算机科学与技术学院综合试验任务书课程设计名称操作系统课程设计文件分配分配文件课程设计题目模拟实现用位示图法管理文件存储空间的分配与回收Request。分配学生姓名回收文件专业班级网回收文件学号2综合试验任务内容问题描述设计实现一个综合的应用程序。内容如下:(1)首先对位示图算法原理进行深刻的理解和掌握:给出位示图初态。分配时,参数为文件名及需

2、要分配的块)程序首先要(2数。回收时,参数为文件名。(3)回答信息:分配时,能够分配时,给出文件名和分配的具体块号。否则,给出无法分配的信息。显示位示图。(4)回收时:给出回收的具体块号。显示位示图。基本要求(1)理解文件存储空间的分配与回收的基本概念,掌握产生文件存储空间的分配与回收的几种方法,体会位示图算法是管理文件存储空间的分配与回收的一种行之有效的方法。(2)通过编写程序实现位示图算法,进步理解位示图算法的原理和执行过程,掌握位示图算法的描述和应用,进一步熟练掌握文件存储空间的分配与回收的方法。测试要求对每个模块的功能进行黑盒测试,保证各个模块功能的正确性。指导教师:时间:年月5日退出

3、程序退出.,和块数输入文件名strcmp(s->office.u->offic否e)=0该文件是否已存在是r->free_number>=s->office_number否能否查找到一个足够的空闱区域是一一修改位示图从该区域分配出对应大小空间.将该作业结点插入作业链表表尾、,当前空盘区块数是否分配完否是择放该空闲区站点,把修改work担面两个首地址目录范文word第一章功能需求描述11.1功能列表与说明11.2操作界面11.3界面操作1第二章系统设计描述21.1 任务分解说明22.2主要数据结构设计说明2. 3主要函数接口说明2第三章算法设计描述53.1主要函数和

4、函数的流程图53. 1.1.盘块的分配算法流程图53. 2.2.盘块的回收算法流程图6第四章开发过程描述73.1 程序源码73.2 程序中遇到的错误及错误原因4. 3测试程序功能所用的数据和测试方法7第五章设计心得体会8附录1程序源代码9范文word第一章功能需求描述1.1 功能列表与说明功能名称功能描述1.2 操作界面文件的存取和回收1 .分配文件2 .回收文件3 .退出请输入选项:1. 3界面操作如图可以很清楚的看到可以输入123三个数分别对应分配文件、回收文件、退出三种操作。范文word第二章系统设计描述1.1 任务分解说明1 .位示图法系统初始化。2位示图法分配与回收算法。2. 2主要

5、数据结构设计说明1 .空闲区结构体定义typedefstructnodeintstartocation;空闲区对象变量的开始位置intfree_number;/空闲区块数目structnode*next;/指向下一个空闲区的指针freeink;2 .申请空间作业结构体定义typedefstructlinkcharoffice20;/作业名intbegin_location;/作业申请空间后的开始位置intoffice_number;/作业申请空间区的数目/指向下一个申请空闲区的作业指针structlink*next;office;3 .相关位示图操作的结构体定义typedefstructfre

6、e_link*p;/空间区链表指针作业链表指针office*q;work;2.3主要函数接口说明范文word1 .显示菜单函数voidmenu()2 .置空位示图进行初始化voidzero-wst()inti;for(i=0;i<256;i+)WSTi=O;)位示图输出显示将初始化或者申请或者回收后的位示图进行显示3.voidprint_wst(intWST256)申请空间的异始位置和截作业名、4.已经申请空间的作业相关情况输出显示包括:至位置voidprint_office(work*w)5 .位示图操作的初始化包括:空闲区链表的初始化、作业链表的初始化work*start()6 .申

7、请空间操作work*request(work*w,intWST2561)17 .回收空间操作work*delect(work*w,intWET)8 .主函数voidmain()intflag;work*w;zero_wst();w=start();while(l)system(cis);print_wst(WST);print_office(w);范文v/ordmenu();cin»flag;switch(flag)case1:w=request(w,WST);break;case2:w=delect(w,WST);break;case3:exit(0);寂悠泠?轴潼晴茏输入错误,请

8、重新输入!n);break;范文word第三章算法设计描述3.1主要函数和函数的流程图盘块的分配算法流程图3.1.1.返回盘块的分配3-1图范文word3. 2.2.盘块的回收算法流程图回收Delect()输入要查找的文件查找能否找到对应文件要回收的单元前为把该单元块数加入前一个要回收的单元后闲区结把空闲区起始地址该为当要回收的单元前后都开始盘块空闲区盘块增结点空盘起始地址改前一空区盘块增加要回收的单元自成盘区结点把该结点插入空闲区链式刑除修改位示图对应盘块的的内里面两个首地修.文件结点返回盘块的回收算法流程图图3-2范文word第四章开发过程描述4. 1程序源码由于源码较长,单独附加在后面,

9、见附录1-程序源码4.2程序中遇到的错误及错误原因编程中几乎没有遇到什么大的问题,只有一些语法中的小错误,编译器就解决完毕。4.3测试程序功能所用的数据和测试方法此次测试使用黑盒测试方法,目的是测试功能是否跟预期一样测试用例预期输出实际输出输入1选择分配功能输出请输入文件名和块数输出请输入文件名和块数输入文件名和块数显示已有文件名:块数显示已有文件名:块数选择回收输入2输出请输入文件名输出请输入文件名范文word第五章设计心得体会1 .准备越充分,实验越顺利。古人云,磨刀不误砍柴工。前期的知识储备、文献储备、材料准备、方法准备可以避免手忙脚乱,充分的预实验使你充满信心。一步一个脚印,就不必“从

10、头再来最不能容忍的是在开始的几步偷懒,造成后面总有一些无法排除的障碍。2 .交流是最好的老师做实验遇到困难是家常便饭。你的笫一反应是什么?反复尝试?放弃?看书?这些做法都有道理,但首先应该想到的是交流。对有身份的人,私下的请教体现你对他的尊重;对同年资的人,公开的讨论可以使大家畅所欲言,而且出言谨慎。千万不能闭门造车。一个实验折腾半年,后来别人告诉你那是死路,岂不冤大头?3 .一半时间做实验,一半时间看文献。千万不能把时间全部消耗在实验台上。看文献、看书、看别人的操作、听别人的经验、研究别人的思路,边做边思考。要学会比较,不要盲从。否则,会被一些小小的问题困扰许久。范文word附录1程序源代码

11、ttincludestdio.httincludemalloc.hitincludewindows.hitincludestring.h/#includeiostream.httinclude<iostream>usingnamespacestd;intWSTE256;/»TwvbwviwviwvbWviwvawvawviwviwviwviwvTWviwvawvawviwviwviwviwvTWviwvawvawviwviwviwviwvTWviwvawvawviwviwviwviwvaw空闲区结构体定义start_location空闲区对象变量的开始位置free_num

12、ber空闲区块数目next指向下一个空闲区的指针,|4|1|4|4|1|4|4|1|4|4|1|4|4|14typedefstructnode(intstart_location;intfree_number;structnode*next;freeink;fIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIII申请空间作业结构体定义officeF作业名begin_location作业申请空间后的开始位置office.number作业申请空间区的数目指向下一个申请空闲区的作业指针nextIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIII范文word

13、inti;for(i=0;i<256;i+)WSTi=O;)IIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIII位示图输出显示将初始化或者申请或者回收后的位示图进行显示 "»""»»""»""»»""»""»»""»""»»""»""»

14、»"" |1|44|1|44|1|44|1|44|1|44|voidprint_wst(intWST256)inti,j=0;printf(%3s,);for(i=0;i<16;i+)printf(=,i);printf();printf(=,0);for(i=0;i<256;i+)j+;printf(=,WSTi);if(j_x0016_=0&&i!=0&&j!=256)printf();printf(=,j/16);printf();) »""»"»&quo

15、t;»»""»"»"»»""»"»"»»""»"»"»»""»"" IIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIII已经申请空间的作业相关情况输出显示包括:作业名申请空间的开始位置和截J.I«rj/voidprint_office(work*w)off

16、ice*q;范文v/ordif(q!=NULL)轴潼晴龙已有文件:n);while(q!=NULL)printf(%s:%d-%dn,q->office,q->begin_location,q->begin_location+q->office_number-l);q=q->next;)f IIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIII作业链表的初始化位示图操作的初始化空闲区链表的初始化包括: »»t->start_location=s->begin_location;t->free number=

17、s>office number;if (r=NULL)P=t;if(r!=NULL&&r->next=NULL)if(r->start_location<s->begin_location) r->next=t;else t->next=r;P=t;e->next=s->next; free (s);)w->p=p;w->q=q;return w;»"'»"»»*»"'»"»»*

18、»"'»"»»*»"'»"»»*»*» IIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIwork*start()freeink*p;office*q;work*w;w=(work*)malloc(sizeof(work);p=(free_link*)malloc(sizeof(freeink);p->start_location=0;p->free_number=256;p->next=NULL

19、;Q=(office*)malloc(sizeof(office);Q->next=NULL;w->p=p;w->q=q;returnw;范文wordinti,m,n,flag=O;freeink*p,*r,*e;/r->free_number用于查找空闲区的块数office*q,*s,*t,*u;/s创建新节点,存储新建文件的信息,n用于查找是否有重复节点P=w->P;r=P;q=w->q;t=Q;u=q->next;轴潼晴龙请输入文件名和块数:);s=(office*)malloc(sizeof(office);s->next=NULL;wh

20、ile(t->next!=NULL)t=t->next;scanf(%s%d,&(s->office),&(s->office_number);while(u!=NULL)if(strcmp(s->office,u->office)=0)flag=l;轴潼晴茏对不起,该文件已存在!n);free(s);break;)u=u->next;)if(flag=0)范文wordif(r=NULL)!n);,没有足够的空间分配失败轴潼晴茏对不起free(s);)elset->next=s;nFL>start_location;空闲区的

21、起始地址作业从空闲区的起始地址开5-油68:11_1(1:1011=1'->5101''1_.000近01;始分配r->start_location=r->start_location+s->office_number空闲块数的盛始地址r->free_number=Lfree_numbeLS->office_number;改变空间区块数的大小n=(r->start_location-1);新的空间区的起始地址Tfor(i=m;i=n;i+)模拟分配WSTi=l;if(r->free_number=O)if(p=r)7p=r

22、说明内存中只有一个整块的空闲区free(r);p二NULL;)elsee=p;while(e!=NULL)范文wordw->p=p;w->q=q;returnw;|4jjj|4|4jjj|4|4jjj|4|4jjj|4|4jjj|4|4jjj回收空间操作 »»"'"'"»»"'"»'"»»"'"»'"»»"'"»

23、;'"»»"'"»'"»»"'" j|jj4|1j|jj4|1j|jj4|1j|jj4|1j|jj4|1j|jj|work*delect(work*w,intWET口)charname20;inti;freeink*p,*r,*t;office*q,*s,*e;p=w->p;r=P;t=p;q=w->q;s=Q;e=q;s=s->next;if(s=NULL)范文wordif(s=NULL)!n;对不起没有找到相关文件酒瑶?elseif

24、(WSTLs->begin_location-11=0&&WSTs->begin_location+s->office_number=l&&s->begin_location-l>=0)jj(WSTs->begin_location-1=0&&s->begin_location+s->office_number=256&&s->begin_location-l>=0)while(r!=NULL)if(r->start_location+r->free_numb

25、er)=s->begin_location)break;r=r->next;r->freenumber=r->freenumber+s->officenumber;)if(WSTrs->begin_location-l=l&&WSTs->begin_location+s->office_number=0&&s->begin_location+s->office_number<256)jI(s->begin_location=0&&WSTs->begin_location

26、+s->office_numberJ=0&&s->begin_location+s->offi范文wordwhile(r!=NULL)if(s->begin_location+s->office_number)=r->start_location)t=r;break;r=r->nextr->free_number=r->free_number+s->office_number+t->free_number;free(t);)if(WSTs->begin_location-l=l&&WSTs-

27、>begin_location+s->office_number=l&&s->begin_location-l>=0&&s->begin_location+s->office_number<256)II(s->begin_location=0&&WSTs->begin_location+s->office_numberj=l&&s->begin_location+s->office_number<256)jj(WSTs->begin_locatio

28、n-1=l&&s->begin_location+s->office_number=256&&s->begin_location-l>=0)I(s->begin_location=0&&s->begin_location+s->office_number=256)t=(free_link*)malloc(sizeof(freeink);t->next=NULL;范文wordif(r!=NULL&&r->next!=NULL)while(r!=NULL&&r-&g

29、t;next!=NULL)if(r->start_location<s->begin_location)&&(s->begin_location<r->next->start_location)break;r=r->next;)t->next=r->next;r->next=t;)for(i=s->begin_location;i<(s->begin_location+s->office_number);i+)WSTi=0;while(e!=NULL)if(e->next=s)bre

30、ak;e=e->next;)范文wordfIIIII1IIIIIII1IIIIIII1IIIIIII1IIIIIII1II主函数 »'»»»»"»»'»»»»"»»'»»»»"»»'»»»»"»»'»»»»"&qu

31、ot; jjj|j411jjj|j411jjj|j411jjj|j411jjj|j414voidmain()intflag;work*w;zero_wst();w=start();while(l)system(cis);print_wst(WST);print_office(w);menu();cin»flag;switch(flag)case1:w=request(w,WST);break;case2:w=delect(w,WST);break;case3:exit(0);寂悠泠?轴演晴茏输入错误,请重新输入!n);break;)范文word计算机科学与技术学院课程设计成绩评审表课

32、程设计名称软件分析与建模课程设计课程设计题目学生姓名专业班级同组人学号指导教师设计成绩评价内容签字:时间:年月日范文wordtypedefstructlink(charoffice20;intbegin-location;intoffice_number;structlink*next;office;»""»"»"»»""»"»"»»""»"»"»»

33、;""»"»"»»""»""IIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIII相关位示图操作的结构体定义空间区链表指针Pq作业链表指针-*/typedefstruct(freeink*p;office*q;work;I1IIIIIII1IIIIIII1IIIIIII1IIIIIII1IIIII程序菜单jjj|j411jjj|j411jjj|j411jjj|j411jjj|j414voidmenu()printf(文件的存取和回收n);printf(1一分配文件n);printf(2一回收文件n);printf(3一退出nt);:);请输入选项printf()»"'"'"»»"'"»'"»»"'"»'"»»"'"»'"»»"

温馨提示

  • 1. 本站所有资源如无特殊说明,都需要本地电脑安装OFFICE2007和PDF阅读器。图纸软件为CAD,CAXA,PROE,UG,SolidWorks等.压缩文件请下载最新的WinRAR软件解压。
  • 2. 本站的文档不包含任何第三方提供的附件图纸等,如果需要附件,请联系上传者。文件的所有权益归上传用户所有。
  • 3. 本站RAR压缩包中若带图纸,网页内容里面会有图纸预览,若没有图纸预览就没有图纸。
  • 4. 未经权益所有人同意不得将文件中的内容挪作商业或盈利用途。
  • 5. 人人文库网仅提供信息存储空间,仅对用户上传内容的表现方式做保护处理,对用户上传分享的文档内容本身不做任何修改或编辑,并不能对任何下载内容负责。
  • 6. 下载文件中如有侵权或不适当内容,请与我们联系,我们立即纠正。
  • 7. 本站不保证下载资源的准确性、安全性和完整性, 同时也不承担用户因使用这些下载资源对自己和他人造成任何形式的伤害或损失。

评论

0/150

提交评论