下载此文档

计算机操作系统动态分区存储管理方式下的内存空间的分配与回收实验报告doc.doc


文档分类:IT计算机 | 页数:约15页 举报非法文档有奖
1/15
下载提示
  • 1.该资料是网友上传的,本站提供全文预览,预览什么样,下载就什么样。
  • 2.下载该文档所得收入归上传者、原创者。
  • 3.下载的文档,不会出现我们的网址水印。
1/15 下载此文档
文档列表 文档介绍
该【计算机操作系统动态分区存储管理方式下的内存空间的分配与回收实验报告doc 】是由【夜紫儿】上传分享,文档一共【15】页,该文档可以免费在线阅读,需要了解更多关于【计算机操作系统动态分区存储管理方式下的内存空间的分配与回收实验报告doc 】的内容,可以使用淘豆网的站内搜索功能,选择自己适合的文档,以下文字是截取该文章内的部分文字,如需要获得完整电子版,请下载此文档到您的设备,方便您编辑和打印。实验报告实验二实验题目,存储器管理系别:计算机科学与技术系班级:姓名:学号,2一、、,确定用来管理内存当前使用情况的数据结构,采用首次适应算法完成内存空间的分配,分情况对作业进行回收,编写主函数对所做工作进行测试。三、实验原理分配:动态分区存储管理方式把内存除O,,根据作业需要内存空间的大小查询内存中各个空闲区,当从内存中找到一个大于或等于该作业大小的内存空闲区时,选择其中一个空闲区,按作业要求划出一个分区装入该作业。回收,作业执行完后,它所占用的内存空间被收回,成为一个空闲区。如果该空闲区的相邻分区也是空闲区,则需要将相邻空闲区合并成一个空闲区。四、实验方法实现动态分区的分配与回收,主要考虑三个问题:第一、设计记录内存使用情况的数据表格,用来记录空闲区和作业占用的区域,利用结构体类型数组来保存数据,;第二、在设计的数据表格基础上设计内存分配算法,采用首次适应算法找合适的分区,对空闲分区表进行排序),分配时要考虑碎片问题);第三、在设计的数据表格基础上设计内存回收算法,分四种情况进行回收,上邻、下邻、上下邻和无相邻分区,.五、实验步骤第一,设计记录内存使用情况的数据表格,已分配分区表,起始地址、长度、标志(:表示“空表项",1表示“已分配”,,空闲分区表,起始地址、长度、标志(0表示“空表项”,,表示“未分配”,struc,,sed_tab,e{flo,t,d,ress,//已分分区起始地址,loatl,ngth,,/已分分区长度,单位为字节i,t,lag,,/已分配表区登记栏标志,用0表示空栏目,,charzuo,,na,,,};//已分配区表Structfree_,,,le,{,,loatad,ress;,/空闲分区起始地址,flo,tlength;//空闲分区长度,单位为字节,n,flag,/,空闲分区表登记栏目用0表示空栏目,1表示未配,;//空闲分区表第二,在设计的表格上进行内存分配,首次适应算法,为作业分配内存,要求每次找到一个起始地址最小的适合作业的分区(按起始地址递增排序,.,最大碎片,i,e,要求当找到的空闲分区,作业的大小的值小于或等于,ize时,将该分区全部分配给作业,数组后面元素向前移,,,否则,给作业分割出一部分空间时,其余部分仍作为新的空闲分区登记(空闲分区长度,空闲分区长度—作业长度,,空闲分区起始地址=空闲分区起始地址+作业长度第三,在设计的表格上进行内存回收。1、上邻,条件,回收作业的始址=某个空闲区的始址,长度操作,空闲区的长度=空闲区的长度+作业的大小2、下邻,条件,回收作业的始址,作业的长度=某个空闲区的始址操作,空闲区的始址=回收作业的始址空闲区的长度=空闲区的长度+作业的长度3、上下邻:条件,1,,条件同时成立操作,空闲区的始址=上邻的始址空闲区的长度=上邻的长度,作业的长度+下邻的长度删除下邻,、无上下邻:,操作:找f,a,,:的行,空闲区的始址,回收作业的始址空闲区的长度=作业的长度六、实验代码,i,cl,de<,os,,e,,。h〉,i,c,u,e〈i:man,,.,〉,,ef,neM10,/允许的空闲区表长最大为m#,ef,n,,1:,/允许的最大作业数量为n,def,,eMIN1/,碎片的最大值ine,,DDR,SS2:0,,空闲分区初始的起始地址,de,,de,i,e,L,NG,H,5:::0,,空闲分区的初始长度st,u,t,sed_t,,flo,t,ddres,,//已分分区起始地址,floa,l,n,t,;/,已分分区长度,,ntflag,//已分配表区登记栏标志,用0表示空栏目}used_tab,e[,,,structfr,e_,{,,loa,,,d,ess;//空闲分区起始地址floatleng,,;//空闲分区长度,intflag,//空闲分区表登记栏目用0表示空栏目,,表示未分配},ree_,able,M,,/,空闲分区表v:ida,locat,,,har,floa,,;,/分配算法子程序void,eclaim,char,,/,回收算法子程序voi,m,in(,,,i,ti,a,,flo,tz,,;cha,zyn;,//空闲分区表初始化,r,,,,a,,e,:].a,dre,s=SADDR,,,;//空闲分区表的起始地址f,ee_t,,le,:,。length,,LEN,TH;//空闲分区表的长度f,ee_table,0,,fla,=1;//标志位置,表示未分配,f:r(,=1;i<,,i++,,,,f,,e,table[i,,ad,res,=0,fr,e_ta,,e[,,。length=0;,fr,e,t,bl,[i,。,,,,=0;}//0表示空栏目,//已分分区表初始化for,i=0,i,,,,,+,,,,used_tab,e,i].,,dress=0,,,use,,table,i,。leng,,=0,,used_,a,l,,i,.f,,g=:,,,,hil,,1),co,,〈<"请选择功能项:”,〈e,dl,,〈〈”,—分配主存",<e,d,,<<"2—回收主存”〈〈en,l,<,”3—显示主存,〈<,ndl〈,"0-退出"<<endl,,,<”选择功能项,:,3,:",,,in〉〉,,swit,h,a),ca,e0,//当选择:时退出程序,ret,rn;,,,a,e1,,//a=1分配主存空间,cout〈<”,,请输入作业名zyn和作业所需长度zy,,作业名为一个字符,长度z,l要小于”,〈SLENGTH〈<",:,,〈end,;,,,,n〉〉z,n〉>zy,;,alloc,t,(zyn,z,l,,//为作业zyn分配主存空间,break;,}c,se2,,//a=2回收主存空间,,,cout,,”,n请输入要回收分区的作业名,,;,cin〉,zyn;,r,,laim(,yn,;,/回收作业,yn的主存空间,,,r,a,,,,,ase3,{,,a=3显示主存情况,输出空闲区表和已分配区表,:,,,〈"\n输出空闲区表,"〈〈e,dl,,,<"起始地址分区长度标志"〈〈,nd,,,,fo,(i,0;i<M,i++),if,f,,e_table[,]。flag,=0)cou,<<s,tw,10,〈〈,ree_,able,i,.ad,re,s<〈setw,10)<<f,ee_,a,le,,]。length,<〈setw(10)〈,,ree_table,i]。,,ag<〈endl,,:u,,,"\n按任意键,输出已分配区表……",,ci,。,et();,cout〈,"\,输出已分配区表:,〈〈endl,,,<〈"起始地址分区长度标志”<<en,l;,,for,i=:,i<,,,++,{if(u,,d_table,i,.,,ag!=0,//输出已分配给作业的表目,:u,〈<,etw,10)<〈use,_,ab,e,i,。addre,s,<setw(1:,〈〈u,,,_table,i,。,e,g,h<〈set,,,:)〈〈,c,ar,used,table[i].f,ag〈,endl,,,reak;,d,fault,,,,:,t<<"\,没有该选项,,,〈endl,,b,ea,;,,,,,ci,.ge,,,,//分配算法子程序voida,,oc,,e(,har,yn,fl:,tz,l,,,lo,tad;in,k,—1,,nti,0,,hile(i<M,,k,=—1,{,,找空间大于,yl的最小空闲区登记项k,if(free,tab,e[,,.leng,h>,zyl,,f,e,_,abl,[i].,,ag,,,,,k=i,,,i++,,if,k=,—1,,//未找到可用空闲区,返回,,,:u,,〈”无可用空闲区!"〈<,n,l,,,r,tur,;},*找到可用空闲区,开始分配:若空闲区大小与作业要求分配的空间差小于MIN,则将找到的空闲区全部分配给该作业;若空闲区大小与要求分配的空间的差大于mini,i,e,则从空闲区划出一部分分配给作业。*/i,(free_table[k,.leng,h-z,l<=,IN,,,,,e_ta,l,,k,.fla,=:,,d=fre,,ta,le,k,.addr,ss,zyl=,ree,tab,e[k,.lengt,;fo,(i,k;i<M;i+,,,f,ee,t,,le,i,=free_tabl,[,+,,;}e,,e{free,ta,l,[,]。,en,th=free_,ab,e[k].,eng,h,zy,;,ad=free,table,k].ad,res,;fre,_tabl,,,].addr,s,=fr,e_,,,le[k]。,ddress,zyl,,,/*修改已分配区表,/i=0;while(,sed,,,ble,i]。f,ag!=:,&i<,)i++,//找空表目iuse,_table,i,,,d,ress=a,;,,s,d_,able,i].length,z,l;,,,,,,ta,le[,,,,lag,zyn,,,eturn,,//al,:cat,//回收作业名为J的作业所占主存空间v:id,eclaim,,h,,,yn,{,inti,k,j,s,t,,fl:atS,,,s,0;,whi,e,(used_table,s],f,a,!=zyn|,us,d_tab,,,s,.,,ag,,0,,,s<,),s++;/,找到作业zyn在以分配表中的表目si,(s,=,,,cout〈〈"找不到该作业,,<〈,,,l,,,tu,n;},u,ed_ta,l,,s,.,,ag=:,,/修改以分配表表目s标志为为空表目S=,,e,_t,,le[s,.ad,,es,;,/取作业zyn在内存中的首地址L=u,ed_,ab,,[s]。,ength,//取作业,yn所分配到的内存的长度=-1;,,k=,,;i=0,,,/寻找回收分区的上下邻空闲区,上邻表目,,下邻表目,wh,le,i,M&,,j==—1|,k==-,)){,f,free_tabl,[,]。fl,,==,,{

计算机操作系统动态分区存储管理方式下的内存空间的分配与回收实验报告doc 来自淘豆网www.taodocs.com转载请标明出处.

相关文档 更多>>
非法内容举报中心
文档信息
  • 页数15
  • 收藏数0 收藏
  • 顶次数0
  • 上传人夜紫儿
  • 文件大小118 KB
  • 时间2024-03-26