第5章 虚拟存储器
虚拟存储器的定义:所谓“虚拟存储器”,是指具有请求调入功能和置换功能,能从逻辑上对内存容量加以扩充的一种存储器系统。
虚拟存储管理下
内存逻辑容量由内存容量和外存容量之和所决定
运行速度接近于内存速度
每位的成本却接近于外存。
虚拟存储器的实现
虚拟存储管理:允许将一个作业分多次调入内存。
虚拟存储器的特征
离散分配方式是基础
多次性:一个作业被分成多次调入内存运行
对换性:允许在作业的运行过程中进行换进、换出。(进程整体对换不算虚拟)
最终体现虚拟性:能够从逻辑上扩充内存容量,使用户所看到的内存容量远大于实际内存容量。
2. 请求分页存储管理方式
基本分页 + “请求调页”和“页面置换”功能。
换入和换出基本单位都是长度固定的页面
增加虚拟功能后需记录的页表项信息有变化:
(1) 状态位P :指示该页是否已调入内存。
(2) 访问字段A :用于记录本页在一段时间内被访问的次数,或记录本页最近已有多长时间未被访问。(置换时考量的参数)
(3) 修改位M :该页在调入内存后是否被修改过。(关系到置换时调出的具体操作)
(4) 外存地址:用于指出该页在外存上的地址。
②缺页中断机构
每当要访问的页面不在内存时,便产生一缺页中断通知OS,OS则将所缺之页调入内存。作为中断,需经历几个步骤:
“保护CPU环境”
“分析中断原因”
“转入缺页中断处理程序”
“恢复CPU环境”等。
作为一种特殊中断,与一般中断有明显区别:
(1) 在指令执行期间产生和处理中断信号。
(2) 一条指令在执行期间,可能产生多次缺页中断。
3.页面置换算法
页面置换算法(page replacement algorithms):选择换出哪些页面的算法,其好坏直接影响系统的性能。
应具有较低的缺页率:
页面调入次数(缺页次数)/总的页面使用次数
1.最佳Optimal置换算法
2.先进先出FIFO置换算法
3.最近最久未使用(LRU)置换算法
4.CLOCK置换算法
5.其他
1)最佳(Optimal)置换算法
优点:保证获得最低的缺页率
不足:无法实现,因为无法预知一进程将来的运行情况
作用:作为参照标准,评价其他算法。
2)先进先出置换算法(FIFO)
先进入的先淘汰,即选择内存中驻留时间最久的页面予以淘汰。
优点:实现简单,把一进程已调入内存的页面按先后次序组织成一个队列,并设置一个指针(替换指针),使它总是指向队首最老的页面。
不足:与进程实际运行规律不相适应(较早调入的页往往是经常被访问的页,频繁被对换造成运行性能降低)
Belady现象:出现分配的页面数增多,缺页率反而提高的异常现象。
描述:一个进程P要访问M个页,OS分配N个内存页面给进程P;对一个访问序列S,发生缺页次数为PE(S,N)。当N增大时,PE(S, N)时而增大,时而减小。
Belady现象的原因:FIFO算法的置换特征与进程访问内存的动态特征矛盾,即被置换的页面并不是进程不会访问的。
3)最近最久未使用(LRU)置换算法
无法预测将来的使用情况,只能利用“最近的过去”作为“最近的将来”的近似,因此,LRU置换算法选择最近最久未使用(least recently used)的页面予以淘汰。
4)轮转算法(clock)
抖动
系统抖动:
为了提高处理机利用率,可增加多道程序并发度;
但进程数目增加过多,每个进程分配得到的物理块太少,在某个临界点上,会出现刚被淘汰的页很快又需重新调入;而调入不久又被淘汰出去;出现频繁缺页
大部分处理器时间都用在来回的页面调度上,这种局面称为系统抖动或颠簸(thrashing)
抖动的后果:
缺页率急剧增加
内存有效存取时间加长,
系统吞吐量骤减;系统已基本不能完成什么任务,而是忙于页面对换操作,cpu虽然忙,但效率急剧下降。
根本原因:
页面淘汰算法不合理;分配给进程的物理页面数(驻留集)太少。
常用防抖动方法:
局部置换策略;
页面调入内存前检查各进程工作集,为缺页率高的增加有限物理块;
L缺页间的平均时间=S置换一个页面所需时间,可使磁盘和cpu达到最大利用率;
抖动发生时选择暂停一些进程,调节多道程序度。