首页 动态分区存储管理方式的主存分配回收实验参考3[1]

动态分区存储管理方式的主存分配回收实验参考3[1]

举报
开通vip

动态分区存储管理方式的主存分配回收实验参考3[1]PAGEPAGE-1-动态分区存储管理方式的主存分配回收实验报告一、实验目的深入了解动态分区存储管理方式的主存分配回收的实现。二、实验要求编写程序完成动态分区存储管理方式的主存分配回收的实现。实验具体包括:首先确定主存空间分配表;然后采用最优适应算法完成主存空间的分配,完成主存空间的回收;最后编写主函数对所作工作进程测试。三、实验原理:存储管理中动态分区的管理方式。四、实验程序设计1。数据结构已分分区表的数据结构定义#definen10//假定系统允许的最大作业数量为ntypedefstructused...

动态分区存储管理方式的主存分配回收实验参考3[1]
PAGEPAGE-1-动态分区存储管理方式的主存分配回收实验报告一、实验目的深入了解动态分区存储管理方式的主存分配回收的实现。二、实验要求编写程序完成动态分区存储管理方式的主存分配回收的实现。实验具体包括:首先确定主存空间分配表;然后采用最优适应算法完成主存空间的分配,完成主存空间的回收;最后编写主函数对所作工作进程测试。三、实验原理:存储管理中动态分区的管理方式。四、实验程序 设计 领导形象设计圆作业设计ao工艺污水处理厂设计附属工程施工组织设计清扫机器人结构设计 1。数据结构已分分区表的数据结构定义#definen10//假定系统允许的最大作业数量为ntypedefstructused{floataddress;//已分分区起始地址floatlength;//已分分区长度,单位为字节CStringflag;//已分配区表登记栏标志,用”0"表示空栏目,作业名表示使用}USED;//已分配区表USEDused_table[n];空闲区表的数据结构定义#definem10//假定系统允许的空闲区表最大为mtypedefstructfree{floataddress;//空闲区起始地址floatlength;//空闲区长度,单位为字节intflag;//空闲区表登记栏标志,用"0"表示空栏目,用”1"表示未分配}FREE;//空闲区表FREEfree_table[m];2。功能函数设计系统数据初始化free_table[0].address=10240;free_table[0]。length=102400;free_table[0]。flag=1;//空闲区表初始化for(i=1;iMessageBox("无可用空闲区”);return;}/*找到可用空闲区,开始分配:若空闲区大小与要求分配的空间差小于minisize大小,则空闲区全部分配;若空闲区大小与要求分配的空间差大于minisize大小,则从空闲区划出一部分分配*/if(free_table[k].length—xk〈=minisize){free_table[k]。flag=0;ad=free_table[k].address;xk=free_table[k].length;}else{free_table[k]。length=free_table[k]。length—xk;ad=free_table[k].address+free_table[k]。length;}//修改已分配区表i=0;while(used_table[i].flag!=’0’&&i〈m)//寻找空表目i++;if(i〉=m)//无表目填写已分分区{MessageBox("无表目填写已分分区,错误”);//修正空闲区表if(free_table[k].flag==0)//前面找到的是整个空闲区free_table[k].flag=1;else//前面找到的是某个空闲区的一部分free_table[k].length=free_table[k].length+xk;return;}else//修改已分配区表{used_table[i]。address=ad;used_table[i].length=xk;used_table[i].flag=J;}return;}回收函数voidCExp3Dlg::reclaim(CStringJ)//回收作业名为J的作业所占主存空间{inti,k,j,s,t;floatS,L;//寻找已分配区表中对应登记项s=0;while((used_table[s].flag!=J||used_table[s].flag=='0')&&s=n)//在已分配区表中找不到名字为J的作业{MessageBox(”找不到该作业");return;}//修改已分配区表used_table[s].flag=’0’;//取得归还分区的起始地址S和长度LS=used_table[s]。address;L=used_table[s]。length;j=-1;k=-1;i=0;//寻找回收分区的上下邻空闲区,上邻表目k,下邻表目jwhile(iUpdateData(true);CStringname;floatsize;name=this-〉m_EDIT_NAME;size=this—>m_EDIT_SIZE;allocate(name,size);}【回收】按钮voidCExp3Dlg::OnButtonReclaim(){this-〉UpdateData(true);CStringname;name=this->m_EDIT_NAME;this—>reclaim(name);}【显示分配区】按钮voidCExp3Dlg::OnButtonAllocate(){CStringstr,xx;CListBox*L;L=&m_LIST_ALLOC;L—>ResetContent();L->InsertString(0,"起始地址分区长度标志”);for(intj=0;j<10;j++){str="”;xx.Format(”%-8.2f”,used_table[j]。address);str+=xx+"";xx。Format(”%-8。2f",used_table[j]。length);str+=xx+”";xx。Format("%s”,used_table[j].flag);str+=xx;L-〉InsertString(j+1,str);}}【显示回收区】按钮voidCExp3Dlg::OnButtonFree(){//TODO:AddyourcontrolnotificationhandlercodehereCStringstr,xx;CListBox*L;L=&m_LIST_FREE;L—>ResetContent();L->InsertString(0,”起始地址分区长度标志”);for(intj=0;j〈MMM;j++){str="";xx。Format(”%—8.2f",free_table[j]。address);str+=xx+”";xx.Format("%—8。2f”,free_table[j]。length);str+=xx+"”;xx。Format("%5d”,free_table[j]。flag);str+=xx;L—〉InsertString(j+1,str);}}3.界面设计本程序的界面力求简洁、友好,每一步需要用户操作的提示以及每一次用户操作产生的调度结果都以中文的形式显示在屏幕上,使用户对要做什么和已经做了什么一目了然。五、实验结果与分析1.本程序可以模拟动态分区存储管理方式的主存分配回收过程,并在对话框中进行显示,经检验,结果正确。但是,这个程序的优化还是尚待完善的,比如:应在分别在分配和回收时设置计数器,以记录当前空闲区和分配区中作业的数目,这样,就可以在显示时便于控制,不要一次显示数组中的所有储存信息,影响界面整齐程序只是简单的实现了分配与回收的过程,对于一些细节问题和边界问题出力的比较粗糙。例如当没有分配区没有作业时,【回收】按钮应失效;在进行回收过程时,不仅要输入作业名,还要输入作业大小,这在实际应用中是很不方便的。2。测试样本数据如下:分配作业(作业名—作业大小)a—2,b-12,c—15,d—18分配区 内容 财务内部控制制度的内容财务内部控制制度的内容人员招聘与配置的内容项目成本控制的内容消防安全演练内容 应进行控制,使界面整齐应进行控制,使界面整齐分配作业e-58,回收作业a
本文档为【动态分区存储管理方式的主存分配回收实验参考3[1]】,请使用软件OFFICE或WPS软件打开。作品中的文字与图均可以修改和编辑, 图片更改请在作品中右键图片并更换,文字修改请直接点击文字进行修改,也可以新增和删除文档中的内容。
该文档来自用户分享,如有侵权行为请发邮件ishare@vip.sina.com联系网站客服,我们会及时删除。
[版权声明] 本站所有资料为用户分享产生,若发现您的权利被侵害,请联系客服邮件isharekefu@iask.cn,我们尽快处理。
本作品所展示的图片、画像、字体、音乐的版权可能需版权方额外授权,请谨慎使用。
网站提供的党政主题相关内容(国旗、国徽、党徽..)目的在于配合国家政策宣传,仅限个人学习分享使用,禁止用于任何广告和商用目的。
下载需要: ¥22.0 已有0 人下载
最新资料
资料动态
专题动态
个人认证用户
is_431370
暂无简介~
格式:doc
大小:88KB
软件:Word
页数:7
分类:小学语文
上传时间:2021-11-27
浏览量:9