欢迎来到得力文库 - 分享文档赚钱的网站! | 帮助中心 好文档才是您的得力助手!
得力文库 - 分享文档赚钱的网站
全部分类
  • 研究报告>
  • 管理文献>
  • 标准材料>
  • 技术资料>
  • 教育专区>
  • 应用文书>
  • 生活休闲>
  • 考试试题>
  • pptx模板>
  • 工商注册>
  • 期刊短文>
  • 图片设计>
  • ImageVerifierCode 换一换

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

    • 资源ID:17602718       资源大小:322KB        全文页数:7页
    • 资源格式: DOC        下载积分:15金币
    快捷下载 游客一键下载
    会员登录下载
    微信登录下载
    三方登录下载: 微信开放平台登录   QQ登录  
    二维码
    微信扫一扫登录
    下载资源需要15金币
    邮箱/手机:
    温馨提示:
    快捷下载时,用户名和密码都是您填写的邮箱或者手机号,方便查询和重复下载(系统自动生成)。
    如填写123,账号就是123,密码也是123。
    支付方式: 支付宝    微信支付   
    验证码:   换一换

     
    账号:
    密码:
    验证码:   换一换
      忘记密码?
        
    友情提示
    2、PDF文件下载后,可能会被浏览器默认打开,此种情况可以点击浏览器菜单,保存网页到桌面,就可以正常下载了。
    3、本站不支持迅雷下载,请使用电脑自带的IE浏览器,或者360浏览器、谷歌浏览器下载即可。
    4、本站资源下载后的文档和图纸-无水印,预览文档经过压缩,下载后原文更清晰。
    5、试题试卷类文档,如果标题没有明确说明有答案则都视为没有答案,请知晓。

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

    【精品文档】如有侵权,请联系网站删除,仅供学习与交流操作系统实验二存储器的分配与回收算法实现.精品文档.实验报告学院(系)名称:计算机与通信工程学院姓名学号专业计算机科学与技术班级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. 当一个新作业要求装入主存时,必须查空闲区表,从中找出一个足够大的空闲区。若找到的空闲区大于作业需要量,这是应把它分成二部分,一部分为占用区,加一部分又成为一个空闲区。4. 当一个作业撤离时,归还的区域如果与其他空闲区相邻,则应合并成一个较大的空闲区,登在空闲区表中。5. 运行所设计的程序,输出有关数据结构表项的变化和内存的当前状态。实验要求:1 详细描述实验设计思想、程序结构及各模块设计思路;2 详细描述程序所用数据结构及算法;3 明确给出测试用例和实验结果;4 为增加程序可读性,在程序中进行适当注释说明;5 认真进行实验总结,包括:设计中遇到的问题、解决方法与收获等;6 实验报告撰写要求结构清晰、描述准确逻辑性强;7 实验过程中,同学之间可以进行讨论互相提高,但绝对禁止抄袭。【实验过程记录(源程序、测试用例、测试结果及心得体会等)】 实验代码如下:#include <iostream.h> 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=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 <num-i-1;j+) if(idlej0>idlej+10) int temp=idlej0; idlej0=idlej+10; idlej+10=temp; temp=idlej1; idlej1=idlej+11; idlej+11=temp; void zuijia() /最佳适应法 num=0; jishu(); for(int i=0;i <num;i+) for(int j=i;j <num-i-1;j+) if(idlej1>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(idlej1 <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+) /将空闲单元排序不包括新回收的 for(int j=i;j <num-i-1;j+) if(idlej0>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 <=idleq0) for(int j=num;j>=q;j-) idlej+10=idlej0; idlej+11=idlej1; idlej0=freec1; idlej1=freec2; b+; if(idlej+10=idlej0+idlej1) idlej1=idlej1+idlej+11; for(int 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=freec+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; break; 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 <<"作业名:" <<freei0 <<" 内存起始地址:" <<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.回收空间;" <<endl; cin>>ch1; cout <<endl; cout <<"1.最先适应法;2.最佳适应法;3.最坏适应法;" <<endl; cin>>ch2; cout <<endl; if(ch1=1) cout <<"请输入要分配内存的作业名及占用内存大小:" cin>>workb0>>workb1; cout <<endl; if(ch2=1) zuixian(); fp(); else if(ch2=2) zuijia(); fp(); else if(ch2=3) zuihuai(); fp(); print(); cout <<"输入要回收的作业名:" <<endl; cin>>n; huishou(n); 实验截图: 成功回收时: 回收失败时: 实验体会: 本次实验的难度要远远大于实验一,尤其是回收进程,主要编写几个算法和回收程序,最佳,最优,最坏算法和回收算法,我用的是数组,有工作数组,空闲数组,已分配数组。最后再编写算法,但是回收算法现在还是有些不清晰,需要进一步研究!

    注意事项

    本文(操作系统实验二存储器的分配与回收算法实现.doc)为本站会员(豆****)主动上传,得力文库 - 分享文档赚钱的网站仅提供信息存储空间,仅对用户上传内容的表现方式做保护处理,对上载内容本身不做任何修改或编辑。 若此文所含内容侵犯了您的版权或隐私,请立即通知得力文库 - 分享文档赚钱的网站(点击联系客服),我们立即给予删除!

    温馨提示:如果因为网速或其他原因下载失败请重新下载,重复下载不扣分。




    关于得利文库 - 版权申诉 - 用户使用规则 - 积分规则 - 联系我们

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

    工信部备案号:黑ICP备15003705号-8 |  经营许可证:黑B2-20190332号 |   黑公网安备:91230400333293403D

    © 2020-2023 www.deliwenku.com 得利文库. All Rights Reserved 黑龙江转换宝科技有限公司 

    黑龙江省互联网违法和不良信息举报
    举报电话:0468-3380021 邮箱:hgswwxb@163.com  

    收起
    展开