操作系统笔记——第3章 操作系统实现管理物理内存的原理

1、操作系统在内存中需要重点完成的目标

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

2、操作系统中管理内存的不同方法

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

3、操作系统在管理内存时即实现,高度依赖硬件

  • 必须知道内存架构
  • MMU(内存管理单元):硬件组件负责处理CPU的内存访问请求,位于CPU中

4、地址空间+地址生成

地址空间定义:

  • 物理地址空间:硬件支持的地址空间。
    进程在运行时执行指令和访问数据都要通过物理地址从主存中存取。当装入程序(Loader)将可执行代码装入内存时,必须通过地址转换将逻辑地址转换成物理地址,这个过程称为地址重定位。
  • 逻辑地址空间:一个运行的程序所拥有的内存范围,是一种一维线性地址空间。
    程序经过编译后,每个目标模块都是从0号单元开始编址,称为该目标模块的相对地址(或逻辑地址)。
    不同进程可以有相同的逻辑地址,因为这些相同的逻辑地址可以映射到主存的不同位置。

地址生成:

  • 逻辑地址生成:运行程序的格式编译转化过程:初始文件–>汇编–>链接–>载入(程序重定位)【.c file–>.s file–>.o file -->.exe file -->程序在内存中】
  • 物理地址的生成
    • CPU:需要执行某条指令的时候需要在逻辑地址的内存内容,因此发起一条带有逻辑地址参数的请求
    • CPU:MMU(内存管理单元)查找在逻辑地址和物理地址之间的映射,如果没有,产生一个处理过程,到内存中找
    • CPU:如果找到了,控制器从总线发送在物理地址的内存内容的请求
    • 主存:将物理地址内存的内容通过总线发送CPU
  • 操作系统在这个过程中的作用是:在整个过程前建立逻辑地址和物理地址之间的映射。操作系统还需要完成地址安全检测

5、连续内存分配

内存碎片问题:空闲内存不能被利用

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

分区的动态分配

  • 简单的内存管理方法:当一个程序准许运行在内存中时,分配一个连续的区间
  • 分配策略
    • 第一适配:为了分配n字节,使用第一个可用空闲块以至块的尺寸比n大。
    • 最优适配:寻找差值最小的空间块。当大部分分配是小尺寸时非常有效
    • 最差适配:寻找差值最大的空间块。假如分配是中等尺寸效果最好

压缩式碎片整理:

  • 操作:重置程序以合并孔洞
  • 前提:要求所有程序是动态可重置的
  • 劣势:重置时间难把控、开销大

交换式碎片整理:

  • 情形:运行程序需要更多的内存
  • 操作:抢占等待的程序+回收它们的内存

猜你喜欢

转载自blog.csdn.net/MaoziYa/article/details/105285443