1、基于局部性原理
1)程序运行前,不需全部装入内存(打破一次性)
- 仅装入当前要运行的部分页面或段即可运行,其余部分暂留在外存上。
- 缺页/段的情况:要访问的页(段) 尚未调入内存。程序应利用OS所提供的请求调页(段)功能,将它们调入内存,使程序继续执行。
2)调入需要的页/段时,如果内存已满,无法再装入新页(段),通过置换功能将内存中暂时不用的页(段)调至外存,腾出足够的内存空间。(不总驻留)
2、交换技术与虚存使用的调入调出技术有何相同和不同之处?
1)主要相同点:是都要在内存与外存之间交换信息;
2)主要区别:
在于交换技术换出换进一般是整个进程(proc结构和共享正文段除外),因此一个进程的大小受物理存储器的限制;
而虚存中使用的调入调出技术在内存与外存之间来回传递的是存储页或存储段,而不是整个进程,从而使得进程映射具有了更大的灵活性,且允许进程的大小比可用的物理存储空间大的多 。
3、虚拟存储器:
1)定义:
虚拟存储器 是指具有请求调入功能和置换功能,能从逻辑上对内存容量加以扩充的一种存储器系统。
2)虚拟存储管理下
- 内存逻辑容量由内存容量和外存容量之和所决定
- 运行速度接近于内存速度
- 每位的成本却接近于外存。
3)虚拟的实现建立在离散分配存储管理基础上
方式:请求分页/请求分段系统
细节:分页/段机构、中断机构、地址变换机构、软件支持
4)特征:
离散分配 方式是基础
- 多次性:一个作业被分成多次调入内存运行
- 对换性:允许在作业的运行过程中进行换进、换出。(进程整体对换不算虚拟)
- 虚拟性:能够从逻辑上扩充内存容量,使用户所看到的内存容量远大于实际内存容量。
4、请求分页存储管理方式:
基本分页 + “请求调页” 和 “页面置换”功能。
换入和换出基本单位都是长度固定的页面
硬件支持 :
- 一台具有一定容量的内/外存的计算机
- + 页表机制
- + 缺页中断机构
- + 地址转换机构
1)页表:
(未被访问过为0)
(未被修改过为0)
- 状态位P :指示该页是否已调入内存
- 访问字段A :用于记录本页在一段时间内被访问的次数,或记录本页最近已有多长时间未被访问。(置换时考量的参数)
- 修改位M :该页在调入内存后是否被修改过。(关系到置换时调出的具体操作)
- 外存地址:用于指出该页在外存上的地址。
(访问字段A 、修改位M 在置换时做处理)
2)缺页中断机构:
- 保护CPU环境”
- “分析中断原因”
- “转入缺页中断处理程序”
- “恢复CPU环境”
一条指令在执行期间,可能产生多次缺页中断
3)地址变换机构:
(分页系统地址变换机构的基础上
增加 产生和处理缺页中断(请求调入)
从内存中换出一页的功能(置换)
)
5、内存分配:
作业不一次装入,部分装入的情况下如何为进程分配内存,涉及三个问题:
1、最小物理块数的确定
少于此数量进程将不能运行
与计算机的硬件结构有关,取决于指令的格式、功能和寻址方式
2、物理块的分配策略 : 固定OR可变分配、全局OR局部置换
1)固定分配、局部置换:为每个进程分配一定数目的物理块,在整个运行期间不再改变(基于进程的类型,或根据程序员、程序管理员的建议) 运行中缺页时,只能从该进程内存中n个页面中选出一页换出,然后再调入一页。
2)可变分配、全局置换:先为每个进程分配一定数目的物理块 OS管理一个空闲物理块队列,发生缺页时,系统从队列中取出一块分配给该进程,将欲调入的页装入(动态增长型,全局空闲空间都可分配使用)
3)可变分配、局部置换:为每个进程分配一定数目的物理块 缺页时,只允许换出该进程在内存的页面,不影响其他进程执行。
3、物理块的分配算法:
- 平均分配算法:将所有可供分配的物理块平均分配给各进程。
- 按比例分配算法:根据进程的大小按比例分配物理块。
- 考虑优先权的分配算法
6、页面置换算法
1、缺页率: 页面调入次数(缺页次数)/ 总的页面使用次数
2、
最佳Optimal置换算法
先进先出FIFO置换算法:存在Belady现象:出现分配的页面数增多,缺页率反而提高的异常现象
轮转算法(最近最久未使用(LRU))置换算法
CLOCK置换算法
其他:最少使用 (LFU)、页面缓冲算法PBA
7.虚拟存储管理下访问内存的有效时间:
8、影响缺页率的主要因素 :
(1)分配给作业的主存块数: 多则缺页率低,反之则高。
(2)页面大小: 大则缺页率低;反之则高。
(3)页面调度算法: 对缺页中断率影响很大,但不可能找到一种最佳算法。
(4)程序编制方法: 以数组运算为例,如果每一行元素存放在一页中,则按行处理各元素缺页中断率低;反之,按列处理各元素,则缺页中断率高。
9、例题:
EP1:
EP2: