内存管理
引入目的
- 更好的支持多道程序的并发执行,提升系统性能
程序装入
-
绝对装入
- 适合单道程序环境
-
静态重定位
- 适合装入之后不移动
-
动态重定位
- 适合装入时还会移动的情况
程序链接
-
静态链接
- 在程序运行之前链接
-
装入时动态链接
- 在装入内存时,采用边装入边链接的链接方式
-
运行时动态链接
- 在程序执行中需要该目标模块时,才对它进行链接
地址空间
-
逻辑地址空间
- 一个源程序在编译或者链接装配后指令和数据所有的相对地址空间
-
物理地址空间
- 内存中物理单元的集合
内存保护
-
上、下限寄存器
- 分别于上、下限寄存器比较
-
基址、限长寄存器
- 与限长寄存器比较,与基址寄存器相加
管理方式
-
连续分配
-
单一连续分配
- 分配到内存固定区域,只适合单任务系统
-
固定分区分配
- 分配到内存中不同的固定区域,只适合单任务系统
-
动态分区分配
-
基本概念
- 按照程序需要进行动态划分
-
分配算法
-
首次适应
- 按地址从小到大为序,分配第一个符合条件的分区
-
最佳适应
- 按空间从小到大为序,分配第一个符合条件的分区
-
最坏适应
- 按空间从大到小为序,分配第一个符合条件的分区
-
临近适应
- 与首适应相似,从上次查完的结束位置开始查找
-
-
-
-
非连续分配
-
基本分页
- 内存分为固定的块,按物理结构划分,回有内部碎片
-
基本分段
- 内存块的大小不固定,按照逻辑结构划分,回有外部碎片
-
段页式
- 基本分页与基本分段的结合,会有内部碎片
-
内存扩充
-
覆盖
- 预选设定覆盖段,覆盖掉暂时不用的内容,通常在同一个程序之中进行
-
交换
- 把处于等待的程序暂时移到外存,通常在不同程序之间进行
-
虚拟内存
-
引入原因
- 在逻辑上扩充内存
-
组成部分
-
页表机制
- 通过查表获得相关信息
-
中断机构
- 要访问不在内存时产生缺页中断
-
地址变化机构
- 把逻辑地址变换成物理地址
-
内存和外存
- 需要一定容量的内存和外部支持
-
-
置换算法
-
最佳置换OPT
- 选择以后不用的页面
-
先进先出FIFO
-
选择最先装入的页面
- Blady异常
-
-
最近最久未使用LRU
- 选择最近最久未使用的页面
-
时钟算法CLOCK
- 选择最近未使用的页面
-
改进型CLOCK
-
-
地址翻译
-
TLB
-
页表(TLB不命中)
-
cache
-
主存(cache)不命中
- 外存(缺页)
-
-
-
-
-