1 / 24
文档名称:

最佳适应算法模拟实现内存分配与回收.docx

格式:docx   大小:256KB   页数:24页
下载后只包含 1 个 DOCX 格式的文档,没有任何的图纸或源代码,查看文件列表

如果您已付费下载过本站文档,您可以点这里二次下载

分享

预览

最佳适应算法模拟实现内存分配与回收.docx

上传人:我行我素 2020/9/11 文件大小:256 KB

下载得到文件列表

最佳适应算法模拟实现内存分配与回收.docx

相关文档

文档介绍

文档介绍:衡阳师范学院工科课程设计 -《操作系统》实验题目:最佳适应算法模拟实现内存分配与回收学 号:07190132 20 08 07 姓 名: 班 级: 0701 指导教师: 陈琼日 期: 2009 年 12 月目 录一、概述 3二、需求分析 3三、实验基本原理 4四、数据结构设计 ()流程图 ()流程图 7五、算法的实现 18六、总结 21七、参考文献 22一、概述1、设计目的(1)了解多道程序系统中,多个进程并发执行的内存资源分配。(2)模拟可变分区存储管理算法实现分区管理的最佳适应分配算法(3)利用最佳适应算法动态实现内存分配与回收(3)通过实现最佳算法来进一步了解动态分区模式的优缺点。(4)掌握最佳适应分配算法,深刻了解各进程在内存中的具体分配策略。2、开发环境PC机DOS;WINDOWS环境VisualC++、任务分配设计人员设计任务王果程序总体设计,部分内存回收的实现,上机编码和调试,程序后期优化刘芳麟部分内存分配的实现,编写文档,设计测试用例何超英部分内存分配的实现,编写文档,数据结构设计高超部分内存回收的实现,资料收集,需求分析二、需求分析克服固定分区中的主存资源的浪费,有利于多道程序设计,提高主存资源的利用率。三、实验基本原理1、可变分区存储管理之最优适应算法分配的概念:分区存储管理是给内存中的进程划分适当大小的存储区,以连续存储各进程的程序和数据,使各进程能并发地执行。最优适应分配算法扫描整个未分配区表或链表,从空闲区中挑选一个能满足用户进程要求的最小分区进行分配。2、关于最优适应的一些基本原理:在可变分区模式下,在系统初启且用户作业尚未装入主存储器之前,整个用户区是一个大空闲分区,随着作业的装入和撤离,主存空间被分成许多分区,有的分区被占用,而有的分区时空闲的。为了方便主存空间的分配和去配,用于管理的数据结构可由两张表组成:“已分配区表”和“未分配区表”。在“未分配表中”将空闲区按长度递增顺序排列,当装入新作业时,从未分配区表中挑选一个能满足用户进程要求的最小分区进行分配。这时从已分配表中找出一个空栏目登记新作业的起始地址和占用长度,同时修改未分配区表中空闲区的长度和起始地址。当作业撤离时已分配区表中的相应状态变为“空”,而将收回的分区登记到未分配区表中,若有相邻空闲区再将其连接后登记。可变分区的回收算法较为复杂,当一个作业撤离时,可分为4种情况:其临近都有作业(A和B),其一边有作业(A或B),其两边均为空闲区。尤其重要的是,在程序中利用“new类型T(初值列表)”申请分配用于存放T类型数据的内存空间,利用“delete指针名”释放指针所指向的内存空间。四、数据结构设计1、(1)内存块structspace //定义内存空间结构体{longstartaddress;longlength;structspace*next;};space*pbc;(2)作业块structwork //定义进程结构体{charname[20];longstartaddress;longlength;structwork*next;};work*S;2、程序流程图、整体程序流程图、内存分配allocate()流程图、内存回收callback()流程图五、算法的实现1、程序主要功能函数设计思想allocate() : 实现内存分配,并在当中调用display(pbc),以及display(S)两个函数显示内存分配完后的空闲块链表和进程链表情况。requireback():实现内存回收,在满足情况的条件下调用allocate()对用户申请的内存块进行回收并在当中调用display(pbc),以及display(S)显示内存回收完后的空闲块链表和进程链表情况。callback(): 按内存回收时的四种情况对内存进行回收。display(pbc):对空闲块链表中的空闲块进行从小到大排序并显示空闲链情况。display(S): 对进程链表中的进程进行从小到大排序并显示进程链情况。main(): 创建并初始化空闲块链表和进程链链表,用户选择操作功能2、程序清单#include<>#include<>#include<>structspace //定义内存空间结构体{longstartaddress;