3.1 计算机体系结构及内存分布体系
- 计算机体系结构/内存分层体系
- 地址空间&地址生成
- 连续内存分配
(1)操作系统要完成的目标
- 抽象:逻辑地址空间
- 保护:独立地址空间
- 共享:访问相同内存
- 虚拟化:更多的地址空间
(2)操作系统实现内存管理目标的手段
- 程序重定位
- 分段
- 分页
- 虚拟内存
- 按需分页虚拟内存·
(3)实现高度依赖于硬件
- 必须知道内存框架
- MMU(内存管理单元):硬件组件负责处理CPU的内存访问请求
3.2地址空间与地址生成
(1)地址空间定义
- 物理地址空间------硬件支持的地址空间
- 逻辑地址空间------一个运行的程序所拥有的内存范围
逻辑地址的生成
(4)地址安全检查
3.3连续内存分配
(1)内存碎片与分区的动态分配
简单的内存管理方法:
- 当一个程序准许运行时,分配一个连续的区间
- 分配一个连续的内存区间给运行的程序以访问数据
(2)分配策略
首次适配
基本原理&实现
需求:
- 按地址排列的空闲块列表
- 分配需要寻找一个合适的分区
- 重分配需要检查,看是否自由分区能合并于相互邻的空闲分区
优势:
- 简单
- 易于产生更大空闲块,向着地址空间的结尾
劣势:
- 外部碎片
- 不确定性
最优适配算法
基本原理&实现
- 为了避免分割大空闲块
- 为了最小化外部碎片产生的尺寸
需求:
- 按尺寸排列的空间块列表
- 分配需求寻找一个合适的分区
- 重分配需要搜索及合并于相邻的空闲分区,若有
优势:
- 当大部分分配是小尺寸时非常有效
- 比较简单
劣势:
- 外部碎片
- 重分配慢
- 易产生很多没用的微小碎片(不怎么好)
最差匹配分配
基本原理&实现
为了避免有太多微小的碎片
需求:
- 按尺寸排列的空闲块列表
- 分配很快(获得最大的分区)
- 重分配需要合并于相邻的空闲分区,若有,然后调整空闲块列表
优势:
- 假如分配是中等尺寸效果最好
劣势:
- 重分配慢
- 外部碎片
- 易于破碎大的空闲块以致大分区无法被分配
3.4连续内存分配:压缩式与交换式碎片整理
(1)压缩式碎片整理
(2)交换式碎片整理
- 运行程序需要更多的内存
- 抢占等待的程序&回收他们的内存