存储管理中的连续内存分配有绝对装入方式和可重定位装入方式。绝对装入方式,同一时间内存只能有一个进程在运行,程序在内存中的物理地址要和编写程序时的逻辑地址完全相同。可重定位装入方式,解决了多道程序设计的中多个程序装入内存的问题,实现了多个程序同时装入内存。动态分区分配算法有首次适应算法、循环首次适应算法、最佳适应算法、最坏适应算法。
首次适应算法:空闲分区链表以地址递增的次序连接,分配内存时从链首顺序查找,直到找到大小能够满足的空闲分区,缺点低地址不断被分割,产生很多很小的分区(碎片)。
循环首次适应算法:分配分区从上次找到的空闲分区的下一个空闲分区开始查找,减少碎片化及查找开销。
最佳适应算法:空闲分区按照分区大小从小到大排序,分配分区时总把能够满足需求并且是最小的空闲分区分配给作业,缺点容易产生碎片。
最坏适应算法:空闲分区按照分区大小从大到小排序,分配分区时选择最大的分配给作业,缺点每次都要分割大的空闲分区,这样会造成存储器缺少大的空闲分区。
动态分区分配之首次适应算法的C语言模拟:
#include <stdio.h>
#include <string.h>
#include <stdlib.h&g