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

    2022年C++模拟操作系统实验内存管理 .pdf

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

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

    2022年C++模拟操作系统实验内存管理 .pdf

    模拟操作系统内存管理实验实验名称:模拟操作系统内存管理。班级:软件 1101班姓名:谭小兵一、实验目的:通过实验了解操作系统内存管理最先适应法的主要技术,帮助了解在不同的存储管理方式下,应怎样实现主存空间的分配和回收。二、实验内容:设计一个按照最先适应法实现操作系统内存管理的程序,模拟主存储器空间的分配和回收。三、基本设计:采用最先适应法模拟主存中内存的分配和回收。数据结构分析:采用双向链表表示内存存储,每个节点包含的主要信息为:进程名、进程大小、存储起始地址、结束地址。头节点是操作系统本身占用的内存,依次往下是表示进程占用的内存,最后一个节点表示的进程的结束存储地址不能比主存空间大。每次加入内存即是从链表表头开始往下搜索合适位置插入表示进程的节点。每次进程结束删除相应节点即可。由此便完成了整个模拟内存管理。基本流程:名师资料总结-精品资料欢迎下载-名师精心整理-第 1 页,共 10 页 -源代码:#include#include#include using namespace std;#define MAX 1048576/定义数据结构/进程所占内存class process public:string name;long int size;long int start;long int end;/bool state;process*next;process*befor;/链表表头,存储进程数class Head public:long int count;process*next;名师资料总结-精品资料欢迎下载-名师精心整理-第 2 页,共 10 页 -/定义挂起队列class Out public:long int count;process*next;/从内存空间由上往下搜索合适的空间并装入内存long int add_pro(Head*head,process*p)/返回 1,表示插入成功;返回0 表示插入失败 process*p1=head-next;/搜索插入位置if(0=p1)/内存为空 head-next=p;p-start=10*1024;p-end=p-size+10240;p-befor=0;p-next=0;return 1;else/如果内存中有进程 long int temp=p1-start-10240;if(p-size next=head-next;head-next-befor=p;p-befor=0;head-next=p;p-start=10240;p-end=p-size+10240;return 1;else/在两个进程间寻找合适位置while(p1-next!=0)/当 p1 不是指向最后一个进程 temp=p1-next-start-p1-end;/以下有重复代码,可优化if(p-size next=p1-next;p1-next-befor=p;名师资料总结-精品资料欢迎下载-名师精心整理-第 3 页,共 10 页 -p1-next=p;p-befor=p1;p-start=p1-end;p-end=p-start+p-size;return 1;p1=p1-next;/都没找到可插入的位置if(p1-end+p-size)next=0;p-befor=p1;p1-next=p;p-start=p1-end;p-end=p-start+p-size;return 1;else return 0;/返回 0,表示插入失败 /add 进程void in_pro(Head*head)process*p=new process;/生成进程coutp-name;cout请输入进程大小:n;long int kb,bb;coutkb;coutbb;p-size=1024*kb+bb;p-next=0;p-befor=0;kb=add_pro(head,p);if(kb=0)cout 进程添加失败!n;else cout进程添加成功!n;system(pause);system(cls);名师资料总结-精品资料欢迎下载-名师精心整理-第 4 页,共 10 页 -return;/kill 进程void kill(Head*head)coutnam;process*p=head-next;while(p)if(p-name=nam)break;p=p-next;if(0=p)cout 未找到进程:nam!next=p)/p 是第一个节点 head-next=p-next;if(0!=p-next)p-next-befor=0;else if(p-next=0)/p 是最后一个节点 p-befor-next=0;p-befor=0;else/中间节点 p-next-befor=p-befor;p-befor-next=p-next;delete p;cout成功删除进程:nam!endl;system(pause);名师资料总结-精品资料欢迎下载-名师精心整理-第 5 页,共 10 页 -system(cls);/挂起进程void out_pro(Head*head,Out*out)coutnam;process*p=head-next;/指向移动源head 链表process*p1=out-next;/指向移动目的out 链表while(p!=0)/搜索要挂起的进程 if(p-name=nam)break;p=p-next;if(0=p)/无相关进程 cout 找不到进程:nam!next=p)/要挂起的进程在第一个 head-next=p-next;if(0!=p-next)/有至少两个链表p-next-befor=0;else if(p-next=0)/要挂起的进程在最后一个 p-befor-next=0;p-befor=0;else/要挂起的进程在中间 p-befor-next=p-next;p-next-befor=p-befor;/done/处理挂起序列,p 指向要插入挂起队列的节点,p1 指向挂起队列第一个节点if(0=p1)/挂起链表为空 名师资料总结-精品资料欢迎下载-名师精心整理-第 6 页,共 10 页 -out-next=p;p-befor=0;else while(0!=p1-next)/p1 指向挂起进程链表的末尾p1=p1-next;p1-next=p;p-befor=p1;p-next=0;/done system(cls);/解挂进程void rein_pro(Head*head,Out*out)coutnam;/process*p1=head-next;/指向移动源链表process*p=out-next;/指向移动源out 链表while(0!=p)if(p-name=nam)break;p=p-next;if(0=p)/无相关进程 cout 找不到进程:nam!next=p)/要删除的进程在第一个 out-next=p-next;if(0!=p-next)/如果 p 后面还有节点p-next-befor=0;else if(p-next=0)/要删除的进程在最后一个 名师资料总结-精品资料欢迎下载-名师精心整理-第 7 页,共 10 页 -p-befor-next=0;else/要挂起的进程在中间 p-befor-next=p-next;p-next-befor=p-befor;/done add_pro(head,p);cout 成功解挂进程:namnext=0;head-count=0;Out*out=new Out;/定义挂起进程头节点out-next=0;long int temp=0;process*p=head-next;process*p1=out-next;while(1)cout 操作系统内存管理模拟实验!内存大小1Mnendl;cout 内存进程存储状态:endl;coutt 操作系统占用:10KBnext;while(0!=p)coutt进程名:namet大小:size)/1024Ksize)%1024Bt起始地址:start结束地址:endnext;p=head-next;cout 内存剩余空间段:n;if(0=p)/无进程名师资料总结-精品资料欢迎下载-名师精心整理-第 8 页,共 10 页 -couttstart-10240)!=0)couttstart-10240)next)/仅有一个进程时couttend)next!=0 temp=p-next-start-p-end;if(temp)coutttempnext;if(0=p-next)/p 指向最后一个节点时 couttend)endl;break;coutn 挂起队列:next;while(p1)coutt进程名:namet大小:size)/1024Ksize)%1024Bnext;coutn1、加入进程 n2、挂起 n3、解挂 n4、kill 进程 n5、退出 endl;coutchose;switch(chose)case 1:in_pro(head);break;case 2:out_pro(head,out);break;case 3:rein_pro(head,out);break;case 4:kill(head);break;case 5:return 0;名师资料总结-精品资料欢迎下载-名师精心整理-第 9 页,共 10 页 -实验结果截图:名师资料总结-精品资料欢迎下载-名师精心整理-第 10 页,共 10 页 -

    注意事项

    本文(2022年C++模拟操作系统实验内存管理 .pdf)为本站会员(C****o)主动上传,淘文阁 - 分享文档赚钱的网站仅提供信息存储空间,仅对用户上传内容的表现方式做保护处理,对上载内容本身不做任何修改或编辑。 若此文所含内容侵犯了您的版权或隐私,请立即通知淘文阁 - 分享文档赚钱的网站(点击联系客服),我们立即给予删除!

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




    关于淘文阁 - 版权申诉 - 用户使用规则 - 积分规则 - 联系我们

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

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

    收起
    展开