Advertisement

分析数据结构编写代码(49)边界标识法

阅读量:

浅析内存管理:内存管理存在两大核心问题,其一是如何进行内存的分配,其二是如何对已释放的内存进行回收。

系统通过查找可利用空间表中符合用户需求大小的内存块,并将其分配给用户。同时,将用户释放的内存重新插入到可利用空间表中,以供后续再次分配使用。然而,具体如何实现这一分配与回收过程呢?

在内存分配与回收过程中,通常采用以下三种策略:1. 首次拟合法 2. 最佳拟合法 3. 最差拟合法

  1. 首次拟合法:

在进行内存分配时,系统会从利用空间表的起始位置开始依次查找第一个满足所需大小的 内存块,并将其分配给用户。因此,该算法的时间复杂度为 O(n),其中 n 表示表中元素的数量。

在执行内存回收操作时,只需将该块直接插入到表头位置即可完成操作,时间复杂度为 O(1)。

  1. 最佳拟合法:

在进行内存分配时,系统会遍历整个表格以寻找一个大于等于所需大小且最接近指定大小 的空闲块。为了避免每次都要遍历整个表格,在初始化时将表格中的节点按空间大小从小到大排序。这样可以提高查找效率,但该方法的时间复杂度仍为 O(n),其中 n 表示表中元素的数量。

在执行回收操作时,则需要按照特定顺序插入相应位置,因此时间复杂度同样为 O(n)。

  1. 最差拟合法:

对于内存分配而言,在表格中寻找一个大于等于所需大小且是最大可用块 的空闲区域。为此也需遍

全部评论 (0)

还没有任何评论哟~