1、实验四、主存空间的分配与回收实验实验项目名称:主存空间的分配与回收实验项目性质:综合性实验所属课程名称:操作系统实验计划学时:2 学时一、 实验目的熟悉主存的分配与回收。理解在不同的存储管理方式下,如何实现主存空间的分配与回收。掌握动态分区分配方式中的数据结构和分配算法及动态分区存储管理方式及其实现过程。二、 实验内容和要求主存的分配和回收的实现是与主存储器的管理方式有关的。所谓分配,就是解决多道作业或多进程如何共享主存空间的问题。所谓回收,就是当作业运行完成时将作业或进程所占的主存空间归还给系统。实验要求使用可变分区存储管理方式,分区分配中所用的数据结构采用空闲分区说明表和空闲分区链来进行,
2、分区分配中所用的算法采用首次适应算法、循环首次适应算法、最佳适应算法三种算法来实现主存的分配与回收。同时,要求设计一个实用友好的用户界面,并显示分配与回收的过程。三、 实验主要仪器设备和材料实验环境硬件环境:IBM-PC 或兼容机软件环境:C 语言编程环境四、 实验方法、步骤及结构测试1、假设初始状态下,可用的内存空间为 640KB,并有下列的请求序列:作业 1 申请 130KB作业 2 申请 60KB作业 3 申请 100KB作业 2 释放 60KB作业 4 申请 200KB作业 3 释放 100KB作业 1 释放 130KB作业 5 申请 140KB作业 6 申请 60KB作业 7 申请
3、50KB作业 6 申请 60KB设计一个空闲分区表(链) ,空闲分区通过空闲分区表(链)来管理,在进行内存分配时,系统优先使用空闲区低端的空间。设计一个空闲分区说明表,设计一个某时刻主存空间占用情况表,作为主存当前使用基础。初始化空闲区和已分配区说明表的值。设计一个作业申请队列以及作业完成后的释放顺序,实现主存的分配和回收。要求每次分配和回收后显示出空闲内存分区链的情况。把空闲区说明表的变化情况以及各作业的申请、释放情况显示、打印出来。2、实现过程内存分配:动态输入构造空闲区表,并显打印示构造好的空闲区表。键盘接收内存申请尺寸大小。根据申请,实施内存分配,并返回分配所得内存首址。分配完后,调整
4、空闲区表(即扣除分配部分) ,并显示调整后的空闲区表。若分配失败,返回分配失败信息。内存回收动态输入构造空闲区表,并显示构造好的空闲区表。根据空闲区表,按内存回收的四种情况从键盘接收回收区域的内存首址与大小。回收区域,调整空闲区表(与前面空闲区相连、与后面空闲区相连、与前后空闲区相连则合并、与前后空闲区都不相连则插入该项) ,并显示调整后的空闲区表。五、实验报告要求:1、设计题目 2、设计要求 3、设计分析 4、实现原理 5、程序流程图6、相关数据结构及说明7、程序执行过程 8、程序代码及注释 9、执行结果和结果分析 10、心得体会 六、思考题1、内存的主要分配方式有哪些?回收时可能出现的什么情况?应怎样处理这些情况?2、动态分区管理的常用内存分配算法有哪几种?比较它们各自的使用范围。七、考核形式考核标准:实行百分制。1. 程序设计的可用性,实用性,通用性,可扩充性( 60%) 2. 学生的动手能力,创新精神( 20% ) 3. 软件界面、编码风格、设计文档、实验报告( 20% )验收标准:学生需提供:实验报告文档实验程序源代码、可执行文件及演示运行结果