动态存储管理
动态分区分配中数据结构分为:空闲分区表(起始位置、空闲块大小、使用情况(空闲或使用))和空闲分区链表
可利用空间表分为3种不同的形式:
- 链表:系统运行期间,所有用户请求分配存储量大小相同,分配时无需查找,将第一个节点分配给用户,释放时,系统将用户释放的空闲块插入表头。
- 分类若干可利用空间表。将空间分区分区根据容量大小进行分类,对于每一类具有相同容量的所有空闲分区,单独设定一个空闲分区链表。
- 空闲块大小随意。系统运行期间,分配给用户的内存块大小不固定,可随需求改变。
可利用空间表的4种分配策略:
- 首次拟合法:每次均从表头查找可利用空间表,将找到第一个>=需求的内存块分配给用户
- 循环首次拟合法:不再每次均从表头而是从上次找到的空闲分区的下一个分区查找,将找到的第一个>=需求的内存块分配给用户
- 最佳拟合法:遍历可利用空间表,从中找出全表最接近满足需求的内存块分配给用户
- 最差拟合法:可利用空间表中最大空闲块分配给用户,此时结点应当从大到小排序,分配时只需从链表中删除第一个结点,并分配一部分给用户,剩余部分插
首次拟合法、最佳拟合法及最差拟合法对比
最佳拟合法适用于请求分配的内存大小范围较广的系统,最差拟合法最终使得链表中的结点大小趋于均匀,适用于请求分配的内存大小范围较窄的系统,首次拟合法适用于系统事先不掌握运行期间可能出