内存分配与回收 内存分配的过程 单一连续分配 单一连续分配是最简单的内存分配方式 只能在单用户、单进程的操作系统中使用 内存中大致分为系统区、用户区;系统区的内存给系统去使用、用户区的内存给用户去使用 固定分区分配 固定分区分配是支持多道程序的最简单存储分配方式 内存空间被划分为若干固定大小的区域 每个分区只提供给一个程序使用,互不干扰 动态分区分配 根据进程实际需要、动态分配内存空间 相关数据结构、分配算法 数据结构 动态分区空闲表数据结构 动态分区空闲链数据结构 分配算法 首次适应算法(FF算法) 分配内存时从开始顺序查找适合的内存区 若没有合适的空闲区,则该次分配失败 每次从头部开始,使得头部地址空间不断被划分 最佳适应算法(BF算法):可以避免大空间小用的情况 最佳适应算法要求空闲区链表按照容量大小排序 遍历空闲区链表找到最佳合适空闲区 如图 快速适应算法(QF算法) 快速适应算法要求有多个空闲区链表 每个空闲区链表存储一种容量的空闲区 如图 内存回收的过程 回收区的四种情况 每种情况的回收方案 空闲区1与回收区紧邻,回收区在空闲区1后面 不需要新建空闲链表节点 只需要把空闲区1的容量增大为空闲区即可 回收区与空闲区1紧邻,回收区在空闲区1前面 将回收区与空闲区1合并 新的空闲区使用回收区的地址 回收区位于空闲区1与空闲区2中间 将空闲区1、空闲区2和回收区合并 新的空闲区使用空闲区1的地址 只有回收区 为回收区创建新的空闲节点 插入到相应的空闲区链表中去