和首地址进行改变,当分配空间的时候,如何空闲空间和申请作业的空间大小相同,就只要把把其状态由空闲转为占用即可,而不需要修改其他信息。当申请的作业的空间小于空闲空间的时候,就要将申请作业的节点插入到指定的空闲节点的前面,并对空闲空间的地址,大小和指针进行改变计算。Р(2)在最佳适用算法中,其分配过程和首次适用算的是大致相同的,但是在分配之前要首先找到最佳的空闲空间,通过扫描整个空闲列表,并在扫描的过程中进行记录,找到最佳的申请的位置,然后将按照首次适应算法分配过程中的操作进行操作即可。Р(3)在回收内存的时候,在输入要释放的作业的ID的时候就对整个链表进行查询,如果没有找到就返回错误,在找到之后,就改变该作业对应的内存的状态,并对其前后节点的状态进行扫描。如果前后有一个是空闲的或者都是空闲的,要将这几个内存分区进行合并,合并成一个大的空闲的内存空间。Р主要仪器设备Р个人计算机PC,visual c++ 6.0编译环境Р调试分析Р在此次实验中,由于要实现两个算法的分配方式,在编写程序的时候就编写成两个程序,分别实现首次适应算法和最佳使用算法。在编写程序并运行的时候,由于第一次编写的时候是采用数组的方式进行编写的,在进行分配的时候总是会出现应经分配的空间让回分配给别的要申请的作业,导致分配结果的错误,在综合分析了整个题目的要求之后,得出用链表是最好的方法,在编写用链表进行分配的时候,由于初始化的时候就初始化一个节点,这就导致后面的分配申请作业空间的时候会很麻烦,故在第一次初始化的时候就将其初始化尾两个节点,这就导致后面的运算和简单,根据上面的分析编写程序,并运行得到正确的结果。Р测试结果Р (1)首次适应算法的运行结果:Р暨南大学本科实验报告专用纸(附页)Р Р暨南大学本科实验报告专用纸(附页)Р Р暨南大学本科实验报告专用纸(附页)Р Р(2)最佳适应算法的运行结果如下图所示: