3.操作系统如何管理物理内存

  • 计算机体系结构/内存分层体系
  • 地址空间 & 地址生成
  • 连续内存分配

3.1 计算机体系结构/内存分配体系

  • 计算机体系结构
  • 内存分层体系
  • 在操作系统的内存管理范例

计算机基本硬件结构
3.操作系统如何管理物理内存
 CPU完成了对整个程序或软件执行的控制, 内存主要是放置了程序的代码和它所处理的数据,第三部分是外设配合程序发挥更大的作用。

3.操作系统如何管理物理内存
内存的层次结构:CPU要访问的数据或指令所存储的位置;
CPU要访问的数据包含很多种类,第一个是寄存器,第二个是cache ,寄存器和cache都位于CPU的内部,操作系统无法对其直接进行管理,但是他们的速度很快,容量很小,所以能放的数据和指令是有限的,所以在计算机内还需要一块很大的存储区域,叫主存或物理内存。


3.操作系统如何管理物理内存

操作系统要完成的任务


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

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

实现高度依赖于硬件
  • 必须知道内存架构
  • MMU(内存管理单元):硬件组件负责处理CPU的内存访问请求


3.2 地址空间与地址生成

地址空间&地址生成
  • 地址空间定义
  • 地址生成
  • 地址安全检查

地址空间

 地址空间有两种,一种是物理地址空间(硬件直接对应的,比如说内存条所代表的主存,硬盘所代表的另一种存储空间),物理内存的地址空间管理是硬件所完成的;另外一种是逻辑地址空间,是指一个运行的程序它所看到的内存空间,它看到的空间更加简单,它是一个一维的线性地址空间。
 程序所访问的逻辑地址空间都会落实到物理地址空间。
3.操作系统如何管理物理内存
逻辑地址生成
3.操作系统如何管理物理内存

物理地址生成
3.操作系统如何管理物理内存

地址安全检测
3.操作系统如何管理物理内存


3.3 连续内存分配:内存碎片与分区的动态分配
(1)连续内存分配
  • 内存碎片问题
  • 分区的动态分配:第一适配;最佳适配;最差适配;
  • 压缩式碎片整理
  • 交换式碎片整理

内存碎片问题
3.操作系统如何管理物理内存

分区的动态分配
3.操作系统如何管理物理内存
首次适配
3.操作系统如何管理物理内存
首次适配的基本原理和实现
简单实现
需求:按地址排序的空间块列表;
  分配需要寻找一个合适的分区;
  重分配需要检查,看是否自由分区能合并于相邻的空闲分区;
首次适配的优势:简单;易于产生更大空闲块,向着地址空间的结尾。
劣势:容易产生外部碎片;不确定性。

最优适配
基本原理和实现:
 为了避免分割大空闲块;
为了最小化外部碎片产生的尺寸;
需求:
 按尺寸排列的空闲块列表
分配需要寻找一个合适的分区
重分配需要搜索及合并于相邻的空闲分区
优势:
 当大部分分配是小尺寸时非常有效;
比较简单;
劣势:
 外部碎片;
重分配慢;
易产生很多没用的细小碎片;



最坏适配:
基本原理和实现:
 为了避免有太多微小的碎片;
需求:
 按尺寸排列的空间块列表;
分配很快;
重分配需要合并于相邻的空闲分区,若有,然后调整空闲块列表;
优势:加入分配是中等尺寸效果最好;
劣势:重分配慢,外部碎片,易于破碎大的空闲块以及分区无法被分配




3.4 连续内存分配:压缩式与交换式碎片整理

压缩式碎片整理:
  • 重置程序以合并孔洞
  • 要求所有程序是动态可置的
  • 议题:
 何时重置?
开销

3.操作系统如何管理物理内存
3.操作系统如何管理物理内存