关于操作系统进程的动态内存分配,今天我们用最先适应算法来具体说明一下。在内存分配中,动态分区是根据实际的进程需求,动态的为之分配空间。最先适应算法分配时从表头指针开始查找可利用空间表,将找到的第一个大小不小于“请求”的空闲块的一部分分配给用户。可利用空间表本身既不按节点的初始地址有序,也不按节点的大小有序。用户释放内存,回收时只是将空闲块插入在链表的表头即可,此算法比较节省时间。

本次研究通过对内存区分配方法最先适应算法的使用,来了解内存分配模式。要实现对作业的内存分配,首先要有一个对作业进行创建和分配内存的模块,其中,该模块在分配内存时要使用最先适应算法;要实现对内存的回收,要有一个内存回收的模块,其中,该模块在回收内存时要考虑内存回收的四种情况;最后,还要有一个能显示内存空闲分区链的情况的模块。

    最先适应算法的思想:将空闲区按其在存储空间中的起始地址递增的顺序排列。为作业分配存储空间时,从空闲区链的始端开始查找,选择第一个满足要求的空闲区,而不管它究竟有多大。要求可用表或自由链接按起始地址递增的次序排列。该算法的最大特点是一旦找到大于或等于所要求内存的长度的分区,则搜索结束。


优点:

1)在释放内存分区时,如果有相邻的空白区就进行合并,使其成为一个较大的空白区;

2)本算法的实质是尽可能的利用存储器的低地址部分,在高地址部分则保留较多的或较大的空白区,以后如果需要较大的空白区,就容易能够满足。

 

缺点:

在低地址部分很快集中了许多非常小的空白区,因而在空白区分配时,搜索次数增加,影响工作效率。

 

设计源码可关注我,私信发送,谢谢大家支持