操作系统实验二存储器的分配与回收算法实现).doc

上传人:asd****56 文档编号:70468079 上传时间:2023-01-19 格式:DOC 页数:8 大小:216KB
返回 下载 相关 举报
操作系统实验二存储器的分配与回收算法实现).doc_第1页
第1页 / 共8页
操作系统实验二存储器的分配与回收算法实现).doc_第2页
第2页 / 共8页
点击查看更多>>
资源描述

《操作系统实验二存储器的分配与回收算法实现).doc》由会员分享,可在线阅读,更多相关《操作系统实验二存储器的分配与回收算法实现).doc(8页珍藏版)》请在taowenge.com淘文阁网|工程机械CAD图纸|机械工程制图|CAD装配图下载|SolidWorks_CaTia_CAD_UG_PROE_设计图分享下载上搜索。

1、实验报告学院(系)名称:计算机与通信工程学院姓名Wk学号专业计算机科学与技术班级2009级3班实验项目实验二:存储器的分配与回收算法实现课程名称操作系统课程代码0668036实验时间2011 年11月28日 第7、8节2011 年12月1 日 第3、4节2011 年12月5 日 第7、8节实验地点软件实验室7-216软件实验室7-219软件实验室7-215批改意见成绩教师签字: 实验内容:1. 模拟操作系统的主存分配,运用可变分区的存储管理算法设计主存分配和回收程序,并不实际启动装入作业。2. 采用最先适应法、最佳适应法、最坏适应法分配主存空间。3. 当一个新作业要求装入主存时,必须查空闲区表

2、,从中找出一个足够大的空闲区。若找到的空闲区大于作业需要量,这是应把它分成二部分,一部分为占用区,加一部分又成为一个空闲区。4. 当一个作业撤离时,归还的区域如果与其他空闲区相邻,则应合并成一个较大的空闲区,登在空闲区表中。5. 运行所设计的程序,输出有关数据结构表项的变化和内存的当前状态。实验要求:1 详细描述实验设计思想、程序结构及各模块设计思路;2 详细描述程序所用数据结构及算法;3 明确给出测试用例和实验结果;4 为增加程序可读性,在程序中进行适当注释说明;5 认真进行实验总结,包括:设计中遇到的问题、解决方法与收获等;6 实验报告撰写要求结构清晰、描述准确逻辑性强;7 实验过程中,同

3、学之间可以进行讨论互相提高,但绝对禁止抄袭。【实验过程记录(源程序、测试用例、测试结果及心得体会等)】 实验代码如下:#include int work102; /作业名字 大小 int idle102; /空闲区大小 地址 int free103; /已分配区域的名字 地址 大小 int num=0,b=1,d,ch1,ch2; void init() idle00=1;idle01=100; free00=0;free11=0;free12=0; work00=0;work01=0; for(int i=1;i =9;i+) /初始化数组 idlei0=0;idlei1=0; freei0

4、=0;freei1=0;freei2=0; worki0=0;worki1=0; void jishu() /求空闲单元数 for(int i=0;i 9;i+) if(idlei1!=0) num+; void jishu1() /求作业数 for(int i=0;i 9;i+) if(worki1!=0) b+; void zuixian() /最先适应法 jishu(); for(int i=0;i num;i+) for(int j=i;j idlej+10) int temp=idlej0; idlej0=idlej+10; idlej+10=temp; temp=idlej1; i

5、dlej1=idlej+11; idlej+11=temp; void zuijia() /最佳适应法 num=0; jishu(); for(int i=0;i num;i+) for(int j=i;j idlej+11) int temp=idlej0; idlej0=idlej+10; idlej+10=temp; temp=idlej1; idlej1=idlej+11; idlej+11=temp; void zuihuai() /最坏适应法 num=0; jishu(); for(int i=0;i num;i+) for(int j=i;j num-i-1;j+) if(idl

6、ej1 idlej+11) int temp=idlej0; idlej0=idlej+10; idlej+10=temp; temp=idlej1; idlej1=idlej+11; idlej+11=temp; void huishou(int name) /回收进程函数 num=0; b=0; jishu(); jishu1(); int c=-1; for(int k=0;k =b;k+) if(freek0=name) c=k; break; if(c=-1)cout 要回收的作业不存在! endl; else for(int i=0;i num;i+) /将空闲单元排序不包括新回收

7、的 for(int j=i;j idlej+10) int temp=idlej0; idlej0=idlej+10; idlej+10=temp; temp=idlej1; idlej1=idlej+11; idlej+11=temp; for(int q=0;q num;q+) /将空单元排序包括新回收的 if(freec1 =q;j-) idlej+10=idlej0; idlej+11=idlej1; idlej0=freec1; idlej1=freec2; b+; if(idlej+10=idlej0+idlej1) idlej1=idlej1+idlej+11; for(int

8、m=j+1;m =num;m+) idlem0=idlem+10; idlem1=idlem+11; idlem0=0; idlem1=0; b-; if(idlej-10=idlej0) idlej-11=idlej-11+idlej1; for(int n=j;j =num;j+) idlen0=idlen+10; idlen1=idlen+11; idlen0=0; idlen1=0; b-; break; if(ch2=1)zuixian(); if(ch2=2)zuijia(); if(ch2=3)zuihuai(); for(int p=c;c b-1;c+) freec0=fre

9、ec+10; freec1=freec+11; freec2=freec+12; workc0=workc+10; workc1=workc+11; cout该进程已被成功回收!endl; void fp() int tag=0; /判断空闲区与请求区大小 num=0; b=0; jishu(); jishu1(); for(int j=0;j num;j+) if(workb1 idlej1) freeb0=workb0; freeb1=idlej0; freeb2=workb1; idlej0=idlej0+workb1; idlej1=idlej1-workb1; tag=1; brea

10、k; else if(workb1=idlej1) freeb0=workb0; freeb1=idlej0; freeb2=workb1; tag=1; for(int i=j;i =num-1;i+) idlei0=idlei+10; idlei1=idlei+11; break; else tag=0; if(tag=0)cout 作业过大没有足够存储空间! endl; void print() num=0; b=1; jishu(); jishu1(); cout 已分配表为: endl; for(int i=0;i =b;i+) if(freei2!=0) cout 作业名: fre

11、ei0 内存起始地址: freei1 占用内存空间: freei2 endl; cout endl; cout 空闲区表为: endl; for(int j=0;j num;j+) if(idlej1!=0) cout 起始地址: idlej0 连续内存空间: idlej1 endl; cout endl; void main() /主函数运行上面定义的函数 init(); int n; cout 1.分配空间;2.回收空间; ch1; cout endl; cout 1.最先适应法;2.最佳适应法;3.最坏适应法; ch2; cout endl; if(ch1=1) cout workb0workb1; cout endl; if(ch2=1) zuixian(); fp(); else if(ch2=2) zuijia(); fp(); else if(ch2=3) zuihuai(); fp(); print(); cout 输入要回收的作业名: n; huishou(n); 实验截图: 成功回收时: 回收失败时: 实验体会: 本次实验的难度要远远大于实验一,尤其是回收进程,主要编写几个算法和回收程序,最佳,最优,最坏算法和回收算法,我用的是数组,有工作数组,空闲数组,已分配数组。最后再编写算法,但是回收算法现在还是有些不清晰,需要进一步研究!第8页 共8页

展开阅读全文
相关资源
相关搜索

当前位置:首页 > 技术资料 > 其他杂项

本站为文档C TO C交易模式,本站只提供存储空间、用户上传的文档直接被用户下载,本站只是中间服务平台,本站所有文档下载所得的收益归上传人(含作者)所有。本站仅对用户上传内容的表现方式做保护处理,对上载内容本身不做任何修改或编辑。若文档所含内容侵犯了您的版权或隐私,请立即通知淘文阁网,我们立即给予删除!客服QQ:136780468 微信:18945177775 电话:18904686070

工信部备案号:黑ICP备15003705号© 2020-2023 www.taowenge.com 淘文阁