连续分配管理方式
单元连续分配
动态分区分配
1.系统要用什么样的数据结构记录内存的使用情况?
两种常用的数据结构
- 空闲分区表
每个空闲分区对应一个表项。表项中包含分区号、分区大小、分区起始地址等信息 - 空闲分区链
每个分区的起始部分和末尾部分分别设置前向指针和后向指针。起始部分出还可记录分区大小等信息
2.当很多个空闲分区都能满足需求时,应该选择哪个分区进行分配?
引出动态分区分配算法
3.如何进行分区的分配回收操作?假设系统采用的数据结构是“空闲分区表”
- 回收区前有相邻的空闲分区
- 回收区后有相邻的空闲分区
- 回收前、后各有一个相邻的空闲分区
- 回收前、后都没有相邻的空闲分区
课后思维导图总结
动态分区分配算法
首次适应算法
每次都从低地址开始查找,找到第一个能满足大小的空闲分区。
如何实现?
空闲分区以地址递增的次序排列。每次分配内存时顺序查找空闲分区链(或空闲分区表),找到大小能满足要求的第一个空闲分区。
最佳适应算法
由于动态区分配是一种连续分配方式,为各进程分配的空间必须是连续的一整片区域。因此为了保证当“大进程”到来时有连续的大片空间,优先使用更小的空闲区
如何实现?
空闲分区以容量递增的次序排列。每次分配内存时顺序查找空闲分区链,找到大小能满足要求的第一个空闲分区
最坏适应算法
又称 最大适应算法
每次分配时优先使用最大的连续空闲区,这样分配后的剩余的空闲区就不会太小,方便使用
如何实现?
空闲分区按容量递减的次序排列。每次分配内存时顺序查找空闲分区链,找到大小能满足要求的第一个空闲分区
四种算法的优缺点