文档介绍:1 目录一、概述…………………………………………………………………………………………… 3 1 .设计目的……………………………………………………………………………………… 3 2 .开发环境……………………………………………………………………………………… 3 3 .任务分配……………………………………………………………………………………… 3 二、需求分析………………………………………………………………………………… 3 三、实验基本原理………………………………………………………………………… 4 1 .可变分区存储管理之最优适应分配算法的概念…………………………………………… 4 2 .关于最优适应分配算法的一些基本原理…………………………………………………… 4 四、数据结构设计…………………………………………………………………………… 4 1 .内存块与作业块……………………………………………………………………………… 4 2 .程序流程图…………………………………………………………………………………… 5 . 整体程序流程图………………………………………………………………………… 5 .内存分配 allocate() 流程图……………………………………………………………… 6 .内存回收 callback() 流程图……………………………………………………………… 7 五、算法的实现……………………………………………………………………………… 7 1 .程序主要功能函数设计思想…………………………………………………………… 7 2 .源程序清单…………………………………………………………………………… 8 3 .测试用例与程序运行结果截图……………………………………………………… 18 六、总结…………………………………………………………………………………………… 21 1 .经验总结…………………………………………………………………………………… 21 2 .心得与体会………………………………………………………………………………… 21 七、参考文献…………………………………………………………………………………… 22 23 一、概述 1 、设计目的(1 )了解多道程序系统中,多个进程并发执行的内存资源分配。(2 )模拟可变分区存储管理算法实现分区管理的最佳适应分配算法(3 )利用最佳适应算法动态实现内存分配与回收(3 )通过实现最佳算法来进一步了解动态分区模式的优缺点。(4 )掌握最佳适应分配算法,深刻了解各进程在内存中的具体分配策略。 2 、开发环境 PC 机 DOS;WINDOWS 环境 Visual C++ for Windows 3 、任务分配设计人员设计任务王果程序总体设计,部分内存回收的实现,上机编码和调试,程序后期优化刘芳麟部分内存分配的实现,编写文档,设计测试用例何超英部分内存分配的实现,编写文档,数据结构设计高超部分内存回收的实现,资料收集,需求分析二、需求分析克服固定分区中的主存资源的浪费,有利于多道程序设计,提高主存资源的利用率。 4 三、实验基本原理 1、可变分区存储管理之最优适应算法分配的概念: 分区存储管理是给内存中的进程划分适当大小的存储区, 以连续存储各进程的程序和数据, 使各进程能并发地执行。最优适应分配算法扫描整个未分配区表或链表, 从空闲区中挑选一个能满足用户进程要求的最小分区进行分配。 2 、关于最优适应的一些基本原理: 在可变分区模式下,在系统初启且用户作业尚未装入主存储器之前,整个用户区是一个大空闲分区, 随着作业的装入和撤离, 主存空间被分成许多分区, 有的分区被占用, 而有的分区时空闲的。为了方便主存空间的分配和去配,用于管理的数据结构可由两张表组成: “已分配区表”和“未分配区表”。在“未分配表中”将空闲区按长度递增顺序排列,当装入新作业时, 从未分配区表中挑选一个能满足用户进程要求的最小分区进行分配。这时从已分配表中找出一个空栏目登记新作业的起始地址和占用长度, 同时修改未分配区表中空闲区的长度和起始地址。当作业撤离时已分配区表中的相应状态变为“空”,而将收回的分区登记到未分配区表中,若有相邻空闲区再将其连接后登记。可变分区的回收算法较为复杂,当一个作业撤离时,可分为 4 种情况:其临近都有作业( A和B), 其一边有作业( A或B), 其两边均为空闲区。尤其重要的是,在程序中利用“ new 类型 T( 初值列表)”申请分配用于存放 T 类型数据的内存空间,利用“ delete 指针名”释放指针所指向的内存空间。四、数据结构设计 1、(1 )内存块 struct space // 定义内存空间结构体{ long startaddr