操作系统第四讲 存储器管理
第一讲:内存管理概述
1. 内存管理的基本概念
-
逻辑地址及物理地址
-
外部碎片
内存中划分给进程剩下太小的无法分配的空间
-
内部碎片
进程进入分配的块,剩下的
2. 内存管理的基本功能
3. 程序的链接与装入
-
程序的运行过程
-
绝对装入
将程序装入装入到指定位置
仅适用单道程序
-
可重定位装入
多道程序中不能预知应放到内存何处,因此采取可重定位装入模式,放到内存中任何允许位置,根据内存情况将目标模块存放;需要根据相对地址更改绝对地址
目标模块起始地址一般从0开始
-
动态运行时装入方式
装入后还能移动位置;把绝对地址转换推迟到程序真正执行的时候
4. 程序的链接
-
静态链接
程序运行前就链接好
-
装入时动态链接
-
运行时动态链接
考点二:内存连续分配管理方式
1. 单一连续分配
2. 固定分区分配
3. 动态分区分配
4.动态分区分配算法
-
首次适应算法FF First Fit
每次从链头开始,直到找到第一个适合的空闲分区
-
循环首次适应NF Next Fit
每次从上一次结束地方再寻找
-
最佳适应BF Best Fit
优先使用满足要求又是满足要求分区中最小的适合分区
即使用内部碎片最小的分区
-
最坏适应WF Worst Fit
优先使用最大的分区
-
对比
5. 内存回收
考点三:基本分页存储管理方式
1. 基本概念
-
页面和(物理块/页框)
进程分成:页
内存分成:物理块/页框
萝卜和坑的关系
最后一页可能放不满页框,造成页内碎片
-
页面大小
页框大小与完整页面大小一致
-
页表
用于记录进程每一页再内存中对应的物理块号(即页框)
存储对应关系
-
页表项
页表的基本单元,一条对应关系
由页号和页框号组成
2. 地址结构
-
结构图
-
页号和页内地址计算
-
页面大小
3. 地址变换机构
页表对应关系的实现方式
要访问某个逻辑地址中的数据
- 将有效地址(相对地址)分为页号和页内地址
- 检索前先判断越界,将页号和页表长度比较
- 用页号检索页表,找到物理块对应关系
- 计算该表项在页表中位置,将页表项开始地址与页号和页表项长度的乘积相加
- 得到物理块号,装入物理地址寄存器
- 将有效地址寄存器中页内地址送入地址寄存器的块内地址字段
- 完成逻辑地址到物理地址的变换
4. 快表TLB(Translation Looksaide Buffer)
相当于一个页表缓存,先查快表如果页号存在直接使用缓存的物理块地址,免去一次查找整个页表时间
5. TLB的实现方式(使用Cache来实现)
-
直接相联映射
-
全相联映射
-
组相联映射
6. 两级页表和多级页表
页表太长需要将页表进行分页,需要建立一张表用于记录页表项对应的物理块地址。