第三章 连续内存分配

一、计算机体系结构及内存分层体系

1. 计算机体系结构

CPU、内存和设备。

2. 内存分层

微处理器内(寄存器、缓存)==> 主存 ==> 磁盘

3. 操作系统的目标

  • 抽象 ==> 逻辑地址空间
  • 保护 ==> 独立地址空间
  • 共享 ==> 访问相同内存
  • 虚拟化 ==> 更多的地址空间

4. 在操作系统中管理内存的不同方法

  • 程序重定位
  • 分段
  • 分页
  • 虚拟内存
  • 按需分页虚拟内存

二、地址空间与地址生成

1. 地址空间

  • 物理地址空间

硬件支持的地址空间

  • 逻辑地址空间

一个运行的程序所拥有的内存范围

2. 地址生成

  • 逻辑地址的生成

.cfile == 编译 ==> .sifle == 汇编 ==> .ofile == 链接 > .exefile == 载入(程序重定位)> 在内存中的程序

  • 物理地址的生成

CPU:运算器需要在逻辑地址上的内存内容,内存管理单元寻找在逻辑地址和物理地址之间的映射,控制器从总线发送在物理地址的内存内容的请求。

内存:内存发送物理地址内存的内容给 CPU。

操作系统:建立逻辑地址和物理地址之间的映射。

三、内存碎片与分区的动态分配

1. 内存碎片问题

  • 空闲空间不能被利用
  • 外部碎片:在分配单元间的未使用内存
  • 内部碎片:在分配单元中的未使用内存

2. 分区的动态分配

  • 简单的内存管理方法

当一个程序被准许运行在内存中时,分配一个连续的区间,还需分配另外一个连续的内存空间给运行的程序以访问数据。

  • 首次适配算法

为了分配 n 字节,使用第一个可用空闲块以致块的尺寸比 n 大。

实现:按地址排序的空闲块列表;分配需要寻找合适的分区;重分配需要检查,看是否有自由分区能够合并于相邻的空闲分区。

优势:简单,易于产生更大的空闲块,向着地址空间的结尾。

劣势:外部碎片,不确定性。

  • 最优适配算法

为了分配 n 字节,使用最小的可用空闲块,以致块的尺寸比 n 大。

实现:按尺寸排列的空闲块列表;分配需要寻找一个合适的分区;重分配需要搜索及合并相邻的空闲分区。

优势:当大部分分配是小尺寸时非常有效,比较简单。

劣势:外部碎片,重分配慢,易产生很多没用的微小碎片。

  • 最差适配算法

为了分配 n 字节,使用最大可用空闲块,以致块的尺寸比 n 大。

实现:按尺寸排列的空闲块列表;分配很快(获得最大的分区);重分配需要合并相邻的空闲分区,然后调整空闲块列表。

优势:加入分配是中等尺寸效果最好。

劣势:重分配慢,外部碎片,易于破碎大的空闲块以致大分区无法被分配。

四、压缩式与交换式碎片整理

1. 压缩式碎片整理

  • 重置程序以合并孔洞
  • 要求所有程序是动态可重置的

2. 交换式碎片整理

  • 运行程序需要更多的内存
  • 抢占等待的程序,回收它们的内存
  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值