- 1、原创力文档(book118)网站文档一经付费(服务费),不意味着购买了该文档的版权,仅供个人/单位学习、研究之用,不得用于商业用途,未经授权,严禁复制、发行、汇编、翻译或者网络传播等,侵权必究。。
- 2、本站所有内容均由合作方或网友上传,本站不对文档的完整性、权威性及其观点立场正确性做任何保证或承诺!文档内容仅供研究参考,付费前请自行鉴别。如您付费,意味着您自己接受本站规则且自行承担风险,本站不退款、不进行额外附加服务;查看《如何避免下载的几个坑》。如果您已付费下载过本站文档,您可以点击 这里二次下载。
- 3、如文档侵犯商业秘密、侵犯著作权、侵犯人身权等,请点击“版权申诉”(推荐),也可以打举报电话:400-050-0827(电话支持时间:9:00-18:30)。
- 4、该文档为VIP文档,如果想要下载,成为VIP会员后,下载免费。
- 5、成为VIP后,下载本文档将扣除1次下载权益。下载后,不支持退款、换文档。如有疑问请联系我们。
- 6、成为VIP后,您将拥有八大权益,权益包括:VIP文档下载权益、阅读免打扰、文档格式转换、高级专利检索、专属身份标志、高级客服、多端互通、版权登记。
- 7、VIP文档为合作方或网友上传,每下载1次, 网站将根据用户上传文档的质量评分、类型等,对文档贡献者给予高额补贴、流量扶持。如果你也想贡献VIP文档。上传文档
查看更多
进程控制报告
操作系统实验题目 内存分配算法 学 号 201226860114姓 名 梁奕晓班 级 实验班1201实验目的利用教师提供的图形包代码,编写程序,实现内存的分配算法(最佳适配和邻近适配)。背景知识本实验要求利用事先已经编写好的图形包软件模拟内存的分配。实现动态分区的分配算法。最佳适配算法选择内存空闲块中最适合进程大小的块分配。邻近适配算法从上一次分配的地址开始查找符合要求的块,所查找到的第一个满足要求的空闲块就分配给进程。三、主要程序MemAllocate.cpp功能:实现内存的分配。程序中实现了首次适配算法MemoryView.cpp 功能:利用图形化软件包显示程序结果OSgraphics软件包功能:定义了各种图形的显示,包括矩形、图形、线条、文本等的显示实验内容与步骤在所提供的程序基础之上实现最佳适配和邻近适配算法。增加测试案例,验证程序的正确性删除掉一个分配的进程(进程3)重新分配一个进程,假设进程6大小为100利用VC++6.0实现上述程序设计和调试操作。通过阅读和分析实验程序,熟悉内存分配算法。工具/准备工作在开始本实验之前,请回顾教科书的相关内容需要做以下准备:一台运行Windows 2000 /XP 操作系统的计算机计算机中需安装Visual C++ 6.0专业版或企业版关键代码与系统截图初始化void CMemAllocate::InitJobs(){m_JobsHead = m_JobsEnd = 0;AddAJobInEnd(Job1,1,180,NULL);AddAJobInEnd(Job2,2,360,NULL);AddAJobInEnd(Job3,3,180,NULL);AddAJobInEnd(Job4,4,60,NULL);AddAJobInEnd(Job5,5,20,NULL);}(部分截图删除进程void CMemAllocate::DeleteJob( int JobIndex) //删除进程{bool flag=false;for (MemoryBlock * p = m_MemList; p != 0; p=p-nextPointer)if ( p-JobIndex == JobIndex ){if (p-prePointer==0) {if(p-nextPointer-JobIndex !=0)p-JobIndex=0;else if(p-nextPointer-JobIndex ==0){p-JobIndex=0;p-BlockLength += p-nextPointer-BlockLength;if( p-nextPointer-nextPointer !=0)p-nextPointer-nextPointer-prePointer=p;p-nextPointer = p-nextPointer-nextPointer;}}else if (p-nextPointer==0){if(p-prePointer -JobIndex !=0) p-JobIndex==0;else if(p-prePointer -JobIndex ==0){p-prePointer-BlockLength += p-BlockLength;p-prePointer-nextPointer=0;}}else {if(p-prePointer-JobIndex!=0 p-nextPointer-JobIndex!=0) //直接归0{p-JobIndex=0;}else if(p-prePointer-JobIndex==0 p-nextPointer-JobIndex==0) //前后合并{p-JobIndex=0;p-prePointer-BlockLength += p-BlockLength+ p-nextPointer-BlockLength;if( p-nextPointer-nextPointer !=0)p-nextPointer-nextPointer-prePointer=p-prePointer;p-prePointer-nextPointer = p-nextPointer-nextPointer; }else if(p-prePointer-JobIndex==0 p-nextPointer-JobIndex!=0) //向前{p-prePointer-BlockLength += p-BlockLength;p-prePointer-nextPointer = p-nextPointer;p-nextPointer-prePointer =p-prePointer;}else if(p-prePointer-JobIndex
文档评论(0)