操作系统课程设计报告综述_第1页
操作系统课程设计报告综述_第2页
操作系统课程设计报告综述_第3页
操作系统课程设计报告综述_第4页
操作系统课程设计报告综述_第5页
已阅读5页,还剩12页未读 继续免费阅读

下载本文档

版权说明:本文档由用户提供并上传,收益归属内容提供方,若内容存在侵权,请进行举报或认领

文档简介

1、课程设计说明书嵌入式操作系统课程设计题目: 内存管理算法模拟 院 系: 计算机科学与工程学院 专业班级: 学 号: 学生姓名: 指导教师: 2014年 11月 25日 安徽理工大学课程设计(论文)任务书 计算机 院系 软件 教研室学 号学生姓名专业(班级)物联网工程设计题目内存管理算法模拟设计技术参数了解内存分配方式掌握动态分区分配的一些算法首次适应算法(FIRST FIT)循环首次适应算法(NEXT FIT)最佳适应算法(BEST FIT)快速适应算法(QUICK FIT)用高级语言模拟内存管理算法程序设计要求(1) 对内存管理算法用高级语言进行模拟。(2)对程序的一些部分要有较详细的分析说

2、明。(3)源代码格式要规范。(4)设计合适的测试用例对程序进行测试。(5)总结要深刻,能说明问题。(6)按期提交完整的程序代码、可执行程序和课程设计报告。工作量课程设计任务要求不少于10页的报告,要赋有模块图或流程图。工作计划第一周:查找相关资料,并绘制草图。第二周:确定选用VC为编程语言。第三周:写需求分析报告。第四周:着手进行编程,实现算法,并调试程序。第五周:测试程序并优化功能,最终完成设计报告。参考资料汤小丹 梁红兵 哲凤屏 汤子瀛 计算机操作系统(第三版)西安电子科技大学出版社,20072杨克昌 王岳斌 计算机导论(第二版)M中国水电出版社,20053徐孝凯 C+语言基础教程(第二版

3、)M 清华大学出版社,20074何钦铭 颜晖 C语言程序设计 M 浙江大学出版社,2004指导教师签字教研室主任签字 年 月 日 课程设计(论文)成绩评定表指导教师评语:成绩: 指导教师: 年 月 日摘要内存管理,是指软件运行时对计算机内存资源的分配和使用的技术。其最主要的目的是如何高效,快速的分配,并且在适当的时候释放和回收内存资源。内存不是预先划分好的,而是在系统运行的过程中建立分区.当作业装入主存时,根据作业所需要的主存容量查看是否有足够的主存空间,若有则按需要分割一个分区给该作业;否则令该作业等待.分区长度不固定分区个数不固定。这种存储管理的方法克服了固定分区严重浪费主存的问题,提高了

4、主存资源的利用率。动态分区分配是根据进程的实际需要,动态的为之分配内存空间。在实现可变分区时,将涉及到分区分配中所用的数据结构、分区分配算法与回收操作等问题。为了实现分区分配,系统中必须配置相应的数据结构。数据结构包括空闲分区表和空闲分区链。内存管理对于编写出高效率的 Windows 程序是非常重要的,这是因为Windows 是多任务系统,它的内存管理和单任务的 DOS 相比有很大的差异。DOS是单任务操作系统,应用程序分配到内存后,如果它不主动释放,系统是不会对它作任何改变的;但 Windows 却不然,它在同一时刻可能有多个应用程序共享内存,有时为了使某个任务更好地执行,Windows 系

5、统可能会对其它任务分配的内存进行移动,甚至删除。因此,我们在 Windows 应用程序中使用内存时,要遵循Windows 内存管理的一些约定,以尽量提高 Windows 内存的利用率。 关键词:内存管理,内存资源分配,动态分区分配,多任务系统 目录1系统分析11.1问题描述11.2算法描述11.3设计目的22 系统设计32.1设计要求32.2设计原理32.3设计流程图43系统实现73.1数据结构73.2函数声明与定义73.3运行结果84总结12参考文献13121系统分析1.1问题描述系统应利用某种分配算法,从空闲分区链表中找到所需大小的分区,如果空闲分区大小大于请求分区大小,则从该分区中按改请

6、求的大小划分出一块内存空间大小划分出一块内存空间分配出去,余下的部分仍留在空闲链表中。然后,将分配区的首址返回给调用者。当进程运行完毕释放内存时,系统根据回收区的首址,从空闲区中找到相应的插入点,此时可能出现以下四种情况之一:该空闲区的上下两相邻分区都是空闲区:将三个空闲区合并为一个空闲区。新空闲区的起始地址为上空闲区的起始地址,大小为三个空闲区之和。空闲区合并后,取消可用表或自由链中下空闲区的表目项或链指针,修改上空闲区的对应项。 该空闲区的上相邻区是空闲区:将释放区与上空闲区合并为一个空闲区,其起始地址为上空闲区的起始地址,大小为上空闲区与释放区之和。合并后,修改上空闲区对应的可用表的表目

7、项或自由链指针。 该空闲区的下相邻区是空闲区:将释放区与下空闲区合并,并将释放区的起始地址作为合并区的起始地址。合并区的长度为释放区与下空闲区之和。同理,合并后修改可用表或自由链中相应的表目项或链指针。两相邻区都不是空闲区:释放区作为一个新空闲可用区插入可用表或自由链。1.2算法描述动态分区分配是根据进程的实际需要,动态的为之分配内存空间。在实现可变分区时,将涉及到分区分配中所用的数据结构、分区分配算法与回收操作等问题。为了实现分区分配,系统中必须配置相应的数据结构。数据结构包括空闲分区表和空闲分区链。为把一个新作业装入内存,必须按照一定的分配方法,从空闲分区表或空闲分区链中选出一分区分配给作

8、业。常用的分配算法有五种,首次适应算法(FIRST FIT)、循环首次适应算法(NEXT FIT)、最佳适应算法(BEST FIT)、快速适应算法(QUICK FIT)和最坏适应算法(WORST FIT)。 本程序采用的是最佳适应算法,我们以空闲分区链为例来说明采用最佳适应算法的分配情况。空闲区按容量递增的次序排列。 分配:当进程申请存储空间,系统顺序查找空闲区表(链),直到找到第一个满足容量要求的空闲区为止。 采用最优适应算法选中的空闲区是满足容量要求的最小空闲区。 优点:选中的空闲区是满足容量要求的最小空闲区,而不致于毁掉较大的空闲区。 缺点:空闲区的大小一般与申请分区大小不相等,因此将其

9、一分为二,留下来的空闲区一般情况下是很小的,以致无法使用。随着时间的推移,系统中的小空闲区会越来越多,从而造成存储空间的浪费。1.3设计目的设计目的比较明确,主要有以下几个:1.了解动态分区分配;2.了解分区分配中的数据结构;3.掌握分区分配算法;4.掌握分区分配算法实现过程;5.会用高级语音模拟内存分配。2 系统设计2.1设计要求1.对内存管理算法用高级语言进行模拟。2.对程序的一些部分要有较详细的分析说明。3.源代码格式要规范。4.设计合适的测试用例对程序进行测试。5.总结要深刻,能说明问题。6.对程序中个功能模块进行说明。7.按期提交完整的程序代码、可执行程序和课程设计报告。2.2设计原

10、理1. 最佳适应算法思路:动态分区管理方式将内存除操作系统占用区域外的空间看成一个大的空闲区。当作业要求装入内存时,根据作业需要内存空间的大小 查询内存中的各个空闲区,当从内存空间中找到一个大于或等于该作业大小的内存空闲区时,选择其中一个空闲区,按作业需求量划出一个分区装人该作业,作业执行完后,其所占的内存分区被收回,成为一个空闲区。如果该空闲区的相邻分区也是空闲区,则需要将相邻空闲区合并成一个空闲区。2.算法设计:采用最优适应算法,每次为作业分配内存时,总是把既能满足要求、又是最小的空闲分区分配给作业。 但最优适应算法容易出现找到的一个分区可能只比作业所需求的长度略大一点的情行,这时,空闲区

11、分割后剩下的空闲区就很小以致很难再使用,降低了内存的使用率。为解决此问题,设定一个限值minsize,如果空闲区的大小减去作业需求长度得到的值小于等于minsize,不再将空闲区分成己分分区和空闲区两部分,而是将整个空闲区都分配给作业。3.内存分配与回收所使用的结构体: 为便于对内存的分配和回收,建立两张表记录内存的使用情况。一张为记录作业占用分区的“内存分配表”,内容包括分区起始地址、长度、作业名/标志(为0时作为标志位表示空栏目);一张为记录空闲区的“空闲分区表”,内容包括分区起始地址、长度、标志(0表空栏目,1表未分配)。两张表都采用顺序表形式。4.关于分配留下的内存小碎片问题:当要装入

12、一个作业时,从“空闲分区表”中查找标志为“1”(未分配)且满足作业所需内存大小的最小空闲区,若空闲区的大小与作业所需大小的差值小于或等于minsize,把该分区全部分配给作业,并把该空闲区的标志改为“0”(空栏目)。同时,在已分配区表中找到一个标志为“0”的栏目登记新装人作业所占用分区的起始地址,长度和作业名。若空闲区的大小与作业所需大小的差值大于minsize。则把空闲区分成两部分,一部分用来装入作业,另外一部分仍为空闲区。这时只要修改原空闲区的长度,且把新装人的作业登记到已分配区表中。5.内存的回收:在动态分区方式下回收内存空间时,先检查是否有与归还区相邻的空闲区(上邻空闲区,下邻空闲区)

13、。若有,则将它们合件成一个空闲区。程序实现时,首先将要释放的作业在“内存分配表”中的记录项的标志改为“0”(空栏目),然后检查“空闲区表”中标志为1(未分配)的栏目,查找是否有相邻的空闲区,若有,将之合并,并修改空闲区的起始地址和长度。2.3设计流程图根据程序结构分析本程序内存分配流程图如图2-1所示:图2-1内存分配流程图内存回收流程图如图2-2所示:图2-1内存回收流程图3系统实现3.1数据结构(1)已分配表的定义:structfloat address; /已分分区起始地址 float length; /已分分区长度,单位为字节 int flag; /已分配区表登记栏标志,"0

14、"表示空栏目,实验中只支持一个字符的作业名used_tablen; /已分配区表(2)空闲分区表的定义:structfloat address;/空闲区起始地址 float length;/空闲区长度,单位为字节 int flag; /空闲区表登记栏标志,用"0"表示空栏目,用"1"表示未分配free_tablem; /空闲区表 3.2函数声明与定义/全局变量float minsize=5;int count1=0;int count2=0;#define M 10/假定系统允许的空闲区表最大为m#define N 10 /假定系统允许的最大作

15、业数量为n/函数声明void initialize(void);int distribute(int, float);int recycle(int);void show();3.3运行结果运行结果如下所示:如图3-1所示为程序的主界面图3-1程序主界面如图3-2所示为模拟内存的分配图3-2模拟内存的分配如图3-3所示为内存分配状况图3-3内存分配状况如图3-4为创建第二个进程图3-4创建第二个进程如图3-5所示为模拟内存的回收图3-5模拟内存的回收如图3-6,3-7为回收后内存的状况先回收作业1:图3-6回收作业1再回收作业2:图3-7回收作业24总结本次课程设计我做的是内存管理算法模拟,我

16、们这次课程设计用到了五种方法实现内存管理,分别是首次适应算法(FIRST FIT)、循环首次适应算法(NEXT FIT)、最佳适应算法(BEST FIT)、快速适应算法(QUICK FIT)和最坏适应算法(WORST FIT)。每个人负责用一种算法的实现。我采用的分区分配算法是最佳适应算法,通过这门课程的学习让我充分了解了内存管理的机制实现,从而更深一步的的对计算机有了很多了解,这对于以后我们的研究和学习计算机系统起到了很重要的作用。通过本次操作系统课程设计,自己的编程能力有所提高,对操作系统内存分配,存储空间的回收都有全新的认识。在这次操作系统课程设计中,我使用了c+编写系统软件,对操作系统

17、中可变分区存储管理有了深刻的理解,但是过程中遇到了很多困难,一边做一边学,对c+有了比较多的理解。实验中遇到很多问题,但是通过与组员的反复讨论和沟通,上网查找了一些资料,终于使问题得到了解决。这次课程设计也让我意识到团队合作的重要性,自己一个人的力量毕竟有限,要和组员反复沟通才能获得解决问题的多方面途径。通过这次课程设计,我们操作系统这门学科有了更深的认识。让我这学期所学的课程得到巩固和良好的吸收,我们组对系统设计的理解得到进一步提高,完善了一些把握不准确的知识点。对之前学过的操作系统课程知识得到了复习与巩固。认识到了对编程的不熟悉,对实践的不足,以后要继续努力。 参考文献1徐孝凯.C+语言基础教程(第二版).北京:清华大学出版社,20072徐孝凯.数据结构应用教程(第二版).北京:清华大学出版社,20073何钦铭 颜晖 .C语言程

温馨提示

  • 1. 本站所有资源如无特殊说明,都需要本地电脑安装OFFICE2007和PDF阅读器。图纸软件为CAD,CAXA,PROE,UG,SolidWorks等.压缩文件请下载最新的WinRAR软件解压。
  • 2. 本站的文档不包含任何第三方提供的附件图纸等,如果需要附件,请联系上传者。文件的所有权益归上传用户所有。
  • 3. 本站RAR压缩包中若带图纸,网页内容里面会有图纸预览,若没有图纸预览就没有图纸。
  • 4. 未经权益所有人同意不得将文件中的内容挪作商业或盈利用途。
  • 5. 人人文库网仅提供信息存储空间,仅对用户上传内容的表现方式做保护处理,对用户上传分享的文档内容本身不做任何修改或编辑,并不能对任何下载内容负责。
  • 6. 下载文件中如有侵权或不适当内容,请与我们联系,我们立即纠正。
  • 7. 本站不保证下载资源的准确性、安全性和完整性, 同时也不承担用户因使用这些下载资源对自己和他人造成任何形式的伤害或损失。

评论

0/150

提交评论