操作系统内存管理——分配与回收

内存分配

  1. 确保计算机有足够的内存处理数据
  2. 确保程序可以用内存中获取一部分内存使用
  3. 确保程序可以归还使用后的内存

内存分配过程

  1. 单一连续分配
    只能在单用户、单进程操作系统中使用
  2. 固定分区分配
    支持多道程序
    内存空间被划分为若干个固定大小的区域
    每个分区之提供给一个程序使用,互不干扰
  3. 动态分区分配
    根据实际需要动态分配内存空间
    动态分区空闲表的数据结构(类似于一个数组,里面存储0、1来标识是否被使用;空闲链表:空闲区相连而成,并列节点合并,节点需要记录容量)

动态分区算法:

  1. 首次适应算法FF:
    从开始顺序查找适合内存区
    若没有则分配失败
    每次从头部开始,使得头部地址空间不断被划分
    主要使用链表数据结构
    (循环适应算法,从上次检索位置开始)
  2. 最佳适应算法BF:
    要求空闲区链表按容量大小排序
    遍历空闲区链表找到最佳合适空闲区
  3. 快速适应算法QF:
    要求多个空闲链表
    每个空闲区链表存储一种容量的空闲区

内存回收的过程

  1. 会收区跟在空闲区后面:
    不需要新建链表节点
    只需要把空闲区容量增大包括该会收区容量
  2. 回收区位于空闲区上面:
    将会收区与空闲区合并
    新的空闲区使用会收区的地址作为新的节点的地址
  3. 回收区夹在两个空闲区中间:
    将三者合并
    新的空闲区使用最上面的空闲区的地址
  4. 回收区上下没有空闲区:
    创建新的空闲节点
    插入到相应的空闲区链表
  • 1
    点赞
  • 1
    收藏
    觉得还不错? 一键收藏
  • 1
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值