系统根据作业所需内存大小来动态分配内存,这也就是可变分区或动态分区。
因为动态分区数量是不固定的,所以用分区说明表来记录分区信息不太合适。所以,就采用了链表形式来组织并记录分区的信息。如下图:
通过链表的形式,将这些空闲且不连续的分区串联起来。因此,在给作业分配分区时,会遍历这条链表上的空闲分区,找出大小合适的分区。
结合不同的场景,有三种分配合适分区的算法。
1、首次适应算法:遍历链表,挑选最开始满足大小要求的分区。
2、最佳适应算法:根据分区的大小升序排序 + 首次适应
3、最差适应算法:根据分区的大小降序排序 + 首次适应
虽然可变分区解决固定分区的内部碎片问题,但这样又引发了外部碎片的问题。如下图: