欢迎来到天天文库
浏览记录
ID:42530029
大小:435.59 KB
页数:46页
时间:2019-09-16
《操作系统课程设计动态分区分配存储管理》由会员上传分享,免费在线阅读,更多相关内容在工程资料-天天文库。
1、学生姓名:学号:专业班级:指导老师:院系名称:合肥工业大学宣城校区《操作系统》课程设计报告课程设计题目:动态分区分配存储管理方晨宇2014217143物联网1班田卫东信息工程系2016年12月23日一、课程设计概述41.1设计任务41.2设计要求41.3设计目的4二、原理及算法描述42.1动态分区分配算法原理42.1.1首次适应算法42.1.2循环首次适应算法52.1.3最佳适应算法52.1.4最坏适应算法52.1.5紧凑算法6三、开发环境6四、重要算法和设计思路描述64.1设计首次适应算法64.2设计循环首次适应算法64.3设计最佳适应算法64.4设计最坏适应算法74.5设计分区回收算法7
2、4.6设计紧凑算法7五、程序实现•数据结构75.1空闲分区的数据结构•…循环双向链表9六、程序实现…程序清单七、总结>课程设计概述1.1设计任务动态分区分配存储管理1.2设计要求1.建立描述内存分配状况的数据结构;2.建立描述进程的数据结构;3.使用两种方式产生进程:a自动产生b手动输入;4.在屏幕上显示内存的分配状况,每个进程的执行状况;5.建立分区分配和回收算法,支持紧凑算法;6.时间的流逝可用下面几种方法模拟:"按键盘,每按一次可认为过一个时间单位;b响应WM-TIMER;7.将一批进程的执行情况存入磁盘文件,以后可以读出并重放;&支持算法:首次适应算法,循坏首次适应算法,最佳适应算法
3、,最坏适应算法;1.3设计目的旨在让我们更好的了解动态分区管理方面的知识。二、原理及算法描述2.1动态分区分配算法原理2.1.1首次适应算法*算法概述:分配内存时,从链首开始顺序查找,找到满足的空闲分区则划出空间分配,余下的空闲空I'可仍保留在空闲链表中空闲节点,则分配2.1.2循环首次适应算法水算法描述:由首次适应算法演变,只是每次分配改为由上一次找到的空闲分区开始查找合适空闲节点*实现算法:在首次适应算法的基础上,将指针置为static,不必每次从头查找空闲分区2.1.3最佳适应算法水算法描述:每次为作业分配内存时,总是把能满足要求、又是最小的空闲分区分配给作业孚实现算法:每次为进程分配
4、内存时,查找能放下该进稈的而且是最小的空闲分区,避免了每次将空闲分区从小到大排序。2.1.4最坏适应算法*算法描述:每次为作业分配内存时,总是挑选一个最大的空闲分区分割给作业使用*算法实现:算法与最佳适应算法儿乎相同,每次查找最大空闲分区节点,将其分配给进程。回收分区:当进程运行完毕释放内存吋,系统根据回收区的首址,从空闲区链(表)中找到相应的插入点,此时可能出现以下四种情况之一;1)回收区与插入点的前一个空闲分区F1相邻接,此时应将回收区与插入点的前一分区合并,不必为回收区分配新表项,而只需修改其前一分区F1的大小.2)回收分区与插入点的后一空闲分区F2相邻接,此时也可将两分区合并,形成新
5、的空闲分区胆用回收区的首址作为新空闲区的首址,大小为两者之和.3)回收区同时与插入点的前,后两个分区邻接,此时将三个分区合并,使用F1的表项和F1的首址,取消F2的表项,大小为三者Z和.4)回收区既不与F1相邻接,又不与F2邻接.这时应为回收区单独建立一新表项,填写回收区的首址和大小,并根据其首址插入到空闲链中的适当位置.2.1.5紧凑算法通过修改每个进程在内存中的标志位status,虚拟将进程重新分配到内存中,此时的分配满足紧凑,避免移动所冇在内存中的进程三、开发环境此程序是本小组利用C++语言在VS2013中实现的四.重要算法和设计思路描述4.1设计首次适应算法每次为进程分配内存时,都首
6、先从双向空闲链表的第一个空闲节点开始查找,如杲该空闲分区只比进程大一点点,则把该空闲分区全部分配给该进程,之后删除该空闲节点;如果空闲分区比进程大很多,则按需分配,修改该空闲区的起始位置和大小;利用循坏依次查找各个节点,为进程分配内存。当指针指向头结点时,说明空闲链表已经查找完毕,没有合适的空闲分区为该进程分配,retumFALSE□4.2设计循环首次适应算法与首次适应算法类似,只不过每次为进程分配内存吋,不再指向空闲链表的头部,设置指向头部的指针是静态static的,运行期间不再改变,则每次分配时从上一次分配的空闲分区的下一个开始。4.3设计最佳适应算法根据最佳适应算法的原理,每次从最小的
7、而且能放下该进程的空闲分区开始分配,于是设计算法,每次查找空闲链表屮最小的而II能放下该进程的空闲分区,避免了将空闲分区链表每次从小到大排序,提高效率。4.4设计最坏适应算法与最佳适应算法类似,每次查找空闲链表中最大的空闲分区进行分配,避免了将空闲分区链表每次从大到小排序,提高效率。4.5设计分区回收算法设计一个函数,时刻检查进程的运行状态,当进程已经运行完毕,则回收该进程所占用的内存分区。对内存分区状态进行
此文档下载收益归作者所有