一、实验目的
1、学会内存的申请、释放和管理
2、掌握内存的分配方法 (FF,BF,WF)
3用链表的形式输出内存申请和释放过程的状态,通过编程进一步了解内存管理。
二、实验内容
用Vim编写一个程序:仿真实现某个内存管理算法,测试给出结果,解释运行结果。
三、实验主要步骤
1、记录内存空间使用情况
2、记录空闲分区
3、内存分配算法-最佳分配算法(Best Fit Allocation)的原理是空闲分区列表按照大小排序,在分配时,查找一个合适的分区(分配n字节分区时,查找并使用不小于n的最小空间分区);在释放时,查找并且合并临近的空闲分区(如果找到的话)。
4、内存释放算法-运行结果-产生测试数据-随机为3个进程分配、释放内存10次以上,即随机产生10组以上数据。
四、实验结果测试
1.程序源代码如图1-图16所示。
















2.使用gcc编译后,运行测试,进行内存的第一次分配操作:创建一个新进程,测试以PPT内容数据为例,分配给进程1的内存大小为24,然后显示内存使用情况,如图17所示。

3.进行内存的第二次分配操作:继续创建一个新进程,分配给进程2的内存大小为74,然后显示内存使用情况,如图18所示。

4.进行内存的第三次分配操作:继续创建一个新进程,分配给进程3的内存大小为36,然后显示内存使用情况,如图19所示。

5.进行内存的第一次释放操作:终止已有进程,选择进程3,然后显示内存使用情况,如图20所示。

6.进行内存的第二次释放操作:终止已有进程,选择进程1,然后显示内存使用情况,可见此时内存空闲区因为是在连续的地址中存在进程2使用内存,将进程1和进程3的内存空间隔断了,如图21所示。

7.进行内存的第四次分配操作:继续创建一个新进程,分配给进程4的内存大小为50,此时虽然有第一段空闲地址,但由于大小不匹配,因此使用了第二段空闲部分的地址。显示内存使用情况,如图22所示。

8.进行内存的第五次分配操作:继续创建一个新进程,分配给进程5的内存大小为16,此时第一段空闲地址大小符合,因此使用了第一段空闲部分的地址。显示内存使用情况,如图23所示。
