25-动态分区分配算法
动态分区分配算法
首次适应算法
算法思想:每次都从低地址开始查找,找到第一个能满足大小的空闲分区
实现方法:
空闲分区以地址递增的次序排列,每次分配内存时顺序查找空闲分区链(或空闲分区表),找到能满足大小的第一个空闲分区。
优点
- 更有可能把高地址部分的大分区保留下来
最佳适应算法
算法思想:为了各个进程分配的空间必须是连续的一整篇区域,因此可以尝试尽可能多的留下大的空闲区间,优先使用更小的空闲区
如何实现:空闲分区按容量递增次序链接。每次分配内存时顺序查找空闲顺序链(或空闲分区表)找到大小能满足要求的第一个分区
最坏适应算法
算法思想:每次分配的时候优先使用最大的连续空闲区
如何实现:空闲分区按照递减的次序链接,每次分配时查找空闲分区链,找到大小能满足的第一个空闲分区。
缺点
每次都选择最大的分区进行分配,虽然可以让分配后留下的空闲区更大,但是如果之后有大进程到达,就没有内存分区可以用了
邻近适应算法
算法思想:首次适应算法每次都从链头开始查找,这可能导致低地址部分会出现很多小的空闲分区,而每次分配查找时,都要经过这些分区,因此也增加了查找的开销,如果每次都从上次查找结束的位置开始检索,就解决了这个问题。
如何实现:空闲分区以地址递增的顺序排列(可以排成一个循环链表).每次分配内存时都从上次查找结束的位置开始查找空闲分区链,找到大小能满足要求的第一个空闲分区
缺点
1.导致高地址部分的大分区更有可能被使用,划分为小分区,最后可能导致无大分区可用。