清华操作系统课程(向勇、陈渝)笔记——第三章(三)(连续内存分配)

连续内存分配

1. 内存碎片问题

碎片:给一个程序分配内存空间之后,会出现一部分无法被利用的内存空间。

  • 外部碎片:在分配单元间的未使用内存
  • 内部碎片:在分配单元中的未使用内存

2. 分区的动态分配

2. 1 什么时候需要给程序分配内存

  • 当一个程序准许运行在内存中时,需要给其分配一个连续的区间。

  • 当一个运行的程序需要访问数据时,需要给其分配一个连续的内存空间来存放数据

2. 2 分配策略

2. 2. 1 首次适配
  • 为了分配n字节,使用第一个可用空闲块,以致块的尺寸比n大。
  • 重分配需要搜索及合并于相邻的空闲分区,若有。
  • 优势:简单;易于产生更大的空闲块(找到第一个可用的空闲块即返回,不易破坏地址空间后面的空闲块)。
  • 劣势:容易产生外部碎片(两个空闲块之间的地址空间较小,不易被使用到)。
2. 2. 2 最优适配算法
  • 为了分配n字节,使用最小的可用空闲块,以致块的尺寸比n大。
  • 重分配需要搜索及合并于相邻的空闲分区,若有。
  • 优势:简单;当大部分分配是小尺寸时非常有效;可以避免分割大空闲块;可以最小化外部碎片产生的尺寸。
  • 劣势:易产生很多没用的微小碎片;重分配慢。
2. 2. 3 最差适配算法
  • 为了分配n字节,使用最大的可用空闲块,以致块的尺寸比n大。
  • 重分配需要搜索及合并于相邻的空闲分区,若有。
  • 优势:当大部分分配是中等尺寸时效果最好;避免有太多微笑的碎片。
  • 劣势:易于破碎大的空闲块以致大分区无法被分配;重分配慢。

3. 处理碎片问题

3. 1 压缩式碎片整理

  • 重置程序以合并孔洞
  • 要求所有程序是动态可重置的
  • 何时重置:程序停止的时候/等待的时候(没有占用CPU的时候)。
  • 重置开销:内存拷贝的开销很大。

3. 2 交换式碎片整理

  • 当运行程序需要更多的内存,将正在等待的程序从主存移到硬盘(虚拟内存)中,即抢占等待的程序的主存。
  • 哪些程序来交换?
  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值