实验五 动态分区分配算法
一、目的和要求
掌握动态分区分配方式中的数据结构、分配算法,针对不同的分配算法如何实现内存空间的分配与回收,必要时如何实现“紧凑”。
二、实验内容
编写一个内存动态分区分配模拟程序,分别实现:首次适应、循环首次适应、最佳适应算法,对内存的分配和回收过程,必要时进行“紧凑”。
每次分配和回收后把空闲分区的变化情况以及个进程的申请、释放情况最好以图形方式显示,尽量可能设计一个友好的用户界面,直观显示内存区域经分配、回收、紧凑后的动态变化情况。
实现提示:
(1)数据结构
可采用链表表示内存使用情况,链表中的结点可以给出对应的某块内存区域的信息,如:区号、起始地址、大小、使用情况(是否空闲)、所装入的进程名等。可以设置两个链表,一个是空闲分区表,一个是已分配分区表。
可通过菜单的选项来完成进程对内存的申请或释放操作。 (2)内存分配
选择分配算法,根据进程申请的内存空间实施分配,若分配成功,返回所得的内存首地址,并显示调整后的空闲分区表。若没有单个空闲分区满足进程需求,而紧凑后可以满足,则实施紧凑并分配。若紧凑后仍不能满足,则分配失败。 (3)内存回收
进程结束后,回收其占有的内存,按内存回收的四种情况进行回收。 (4)排序
无论是分配还是回收,都要按相应的分配算法对空闲分区的组织要求重新排序。
测试用例:某操作系统采用可变分区分配存储管理方法,用户区为512K
且始址为0。若分配时采用分配空闲低地址部分的方案,其初始时用户区的512K空间空闲,对下述申请、释放序列:申请300K,申请100K,释放300K,申请150K,申请30K,申请40K,申请60K,释放30K;运行程序显示两种算法的运行结果:
(1)采用首次适应算法,空闲分区中有哪些空闲块(给出始址,大小)? (2)采用最佳适应算法,空闲分区中有哪些空闲块(给出始址,大小)?
三、实验环境
1.PC微机。
2.Windows 操作系统。 3.C/C++/VB等开发集成环境。
四、实验结果
1. 程序源代码。
要求:(1)含有详细注释;(2)能编译运行并得到正确结果。 2 实验报告。
实验报告内容包括:(1)程序的框架说明;(2)各动态分区分配算法的设计思想;(3)解决方法的整体流程;(4)运行结果及分析;(5)对几种动态分区分配算法进行比较。
实验五 动态分区分配算法



