虚拟存储器
虚拟存储器概述
虚拟存储器的定义和特征
定义
具有请求调入功能,能从逻辑上对内存容量加以扩充的一种存储器系统。
特征
- 多次性:作业允许被分成多次调入内存
- 对换性
- 虚拟性
虚拟存储器的实现方法
请求分页方法
- 硬件支持:页表机制,缺页中断机制,地址变换机制
- 软件支持
请求分段系统
请求分页式存储管理方式
请求分页中的硬件支持
请求页表机制
请求页表包含以下的部分
| 页号 | 物理块号 | 状态位P | 访问字段A | 修改位M | 外存地址 |
- 状态位:指示该页是否已经被调入内存
- 访问字段:一段时间内被范文的次数,或则以及多久没被访问
- 修改位:标志该页在调入内存后是否被修改过
- 外存地址:指出该页在外存中的地址,通常是物理块号
缺页中断机制
范文的页面不在内存中,就要产生缺页中断
地址变换机构
请求分页中的内存分配
涉及三个问题
- 所需要的最小物理块数确定
- 应该采取什么样的分配策略
- 采取平均分配还是按进程大小比例分配
最小物理块的确定
最小物理块数是能保证进程正常运行所需的最小物理块数。
内存分配策略
- 固定分配局部置换:固定分配指的是为每个进程分配一组数目固定的物理块,在进程运行期间不再改变。局部置换指的是进程运行中发现缺页,则只能从分配给该进程中的n页中选择一页进程置换。
- 可变分配和全局置换:可变分配指的是先为每一个进程分配一定数量的物理块,然后在进程运行的期间,可根据情况增加或减少。全局置换指的是进程缺页,就将物理块为单位置换。
- 可变分配和局部置换
物理块的分配算法
- 平均分配算法:所有可供分配的物理块,平均分配给每个进程
- 按比例分配算法:物理块数 = (进程页数 / 总页数)* 可用物理块数
页面调入策略
何时调入页面
- 预调页策略:预测未来将会调入的页面
- 请求调页策略:需要某些页面的时候发现不在内存中才调入
从何处调入页面
如何调入页面
缺页率
进程的逻辑空间为n页,系统为其分配的内存物理块数为m,访问成功的次数为S,访问失败的次数为F,总访问次数为A = S + F,缺页率为f = F / A。
影响因素:
- 页面大小
- 进程所分配的物理块数目
- 页面置换算法
- 程序固有的特性
页面置换算法
不适当的算法可能会发生抖动,即刚刚换出的页很快又要被访问,又要把它重新调入。
最佳页面置换算法(OPT)
物理块越多,不一定命中率越高,因为发生了抖动。其淘汰永远或最长不访问的块。该算法无法实现,但是可以用来评价其他的算法。
先进先出页面置换算法(FIFO)
直接淘汰最早进入内存的页面
最近最久未使用页面置换算法(LRU)
往左找最远的那一个进行置换
硬件支持
1、寄存器:为页面配置移位寄存器。访问物理块的是偶,把对应寄存器的R_n-1位置为1,定时信号每隔一定时间使得寄存器右移一位,具有最小数值的寄存器就是最近最久未使用的页面。
2、栈:直接淘汰栈底的页,如果命中就移动到栈顶。
最少使用页面置换算法(LFU)
最近使其最少使用的被置换
抖动与工作集
抖动
产生抖动的根本原因是系统中运行的进程太多,导致分配给每个进程的物理块太少,不能满足进程正常运行的基本要求,使得每个进程在运行的时候疯狂缺页。
缺页率开始随着物理块数增加而减少,但是超过某个数目的时候,就没有明显改善了。
预防方法
- 局部置换策略
- 把工作集算法融入处理机调度中
- 选择暂停的进程
- 利用L=S准则调节缺页率