一、计算机体系结构及内存分层体系
1. 计算机体系结构
CPU、内存和设备。
2. 内存分层
微处理器内(寄存器、缓存)==> 主存 ==> 磁盘
3. 操作系统的目标
- 抽象 ==> 逻辑地址空间
- 保护 ==> 独立地址空间
- 共享 ==> 访问相同内存
- 虚拟化 ==> 更多的地址空间
4. 在操作系统中管理内存的不同方法
- 程序重定位
- 分段
- 分页
- 虚拟内存
- 按需分页虚拟内存
二、地址空间与地址生成
1. 地址空间
- 物理地址空间
硬件支持的地址空间
- 逻辑地址空间
一个运行的程序所拥有的内存范围
2. 地址生成
- 逻辑地址的生成
.cfile == 编译 ==> .sifle == 汇编 ==> .ofile == 链接 > .exefile == 载入(程序重定位)> 在内存中的程序
- 物理地址的生成
CPU:运算器需要在逻辑地址上的内存内容,内存管理单元寻找在逻辑地址和物理地址之间的映射,控制器从总线发送在物理地址的内存内容的请求。
内存:内存发送物理地址内存的内容给 CPU。
操作系统:建立逻辑地址和物理地址之间的映射。
三、内存碎片与分区的动态分配
1. 内存碎片问题
- 空闲空间不能被利用
- 外部碎片:在分配单元间的未使用内存
- 内部碎片:在分配单元中的未使用内存
2. 分区的动态分配
- 简单的内存管理方法
当一个程序被准许运行在内存中时,分配一个连续的区间,还需分配另外一个连续的内存空间给运行的程序以访问数据。
- 首次适配算法
为了分配 n 字节,使用第一个可用空闲块以致块的尺寸比 n 大。
实现:按地址排序的空闲块列表;分配需要寻找合适的分区;重分配需要检查,看是否有自由分区能够合并于相邻的空闲分区。
优势:简单,易于产生更大的空闲块,向着地址空间的结尾。
劣势:外部碎片,不确定性。
- 最优适配算法
为了分配 n 字节,使用最小的可用空闲块,以致块的尺寸比 n 大。
实现:按尺寸排列的空闲块列表;分配需要寻找一个合适的分区;重分配需要搜索及合并相邻的空闲分区。
优势:当大部分分配是小尺寸时非常有效,比较简单。
劣势:外部碎片,重分配慢,易产生很多没用的微小碎片。
- 最差适配算法
为了分配 n 字节,使用最大可用空闲块,以致块的尺寸比 n 大。
实现:按尺寸排列的空闲块列表;分配很快(获得最大的分区);重分配需要合并相邻的空闲分区,然后调整空闲块列表。
优势:加入分配是中等尺寸效果最好。
劣势:重分配慢,外部碎片,易于破碎大的空闲块以致大分区无法被分配。
四、压缩式与交换式碎片整理
1. 压缩式碎片整理
- 重置程序以合并孔洞
- 要求所有程序是动态可重置的
2. 交换式碎片整理
- 运行程序需要更多的内存
- 抢占等待的程序,回收它们的内存