虚拟存储器

虚拟存储器:逻辑上扩充内存

 

虚拟存储器的基本概念

常规存储器管理方式的特征
一次性:作业在运行前一次性地全部装入内存
驻留性:作业装入内存后,便一直驻留在内存中,直至作业运行结束。

时间局部性(temporal locality)
被引用过一次的存储器位置很可能在不远的将来再被多次引用。
空间局部性(spatial locality)
如果一个存储器位置被引用了一次,那么程序很可能在不远的将来引用附近的一个存储器位置。

基于局部性原理
程序运行前,不需全部装入内存(打破一次性)
仅装入当前要运行的部分页面或段即可运行,其余部分暂留在外存上。
缺页/段的情况:要访问的页(段) 尚未调入内存。程序应利用OS所提供的请求调页(段)功能,将它们调入内存,使程序继续执行。

 

交换技术与虚存使用的调入调出技术的不同之处

主要相同点是都要在内存与外存之间交换信息;
主要区别在于交换技术换出换进一般是整个进程(proc结构和共享正文段除外),因此一个进程的大小受物理存储器的限制;
而虚存中使用的调入调出技术在内存与外存之间来回传递的是存储页或存储段,而不是整个进程,从而使得进程映射具有了更大的灵活性,且允许进程的大小比可用的物理存储空间大的多 。

虚拟存储器的定义
具有请求调入功能和置换功能,能从逻辑上对内存容量加以扩充的一种存储器系统。

虚拟存储管理:
允许将一个作业分多次调入内存。

 

缺页中断机构
每当要访问的页面不在内存时,便产生一缺页中断通知OS,OS则将所缺之页调入内存。作为中断,需经历几个步骤:
“保护CPU环境”
“分析中断原因”
“转入缺页中断处理程序”
“恢复CPU环境”等。
作为一种特殊中断,与一般中断有明显区别:
(1) 在指令执行期间产生和处理中断信号。
(2) 一条指令在执行期间,可能产生多次缺页中断。

地址变换机构:

 

页面置换算法

最佳Optimal置换算法:无法实现

先进先出FIFO置换算法:

优点:实现简单,把一进程已调入内存的页面按先后次序组织成一个队列,并设置一个指针(替换指针),使它总是指向队首最老的页面。
不足:与进程实际运行规律不相适应(较早调入的页往往是经常被访问的页,频繁被对换造成运行性能降低)

最近最久未使用(LRU)置换算法:

不足:有时页面过去和未来的走向之间并无必然的联系。
相应的需较多的硬件支持:记录每个页面自上次被访问以来所经历的时间t,淘汰时选择页面t值最大的;以及需要快速地知道哪一页是最近最久未使用的页面,用寄存器或栈。

改进CLOCK:

改进:主要考虑对没访问过的页面再细分是否修改过的不同情况,减少因修改造成的频繁I/O操作。
每页除记录是否用过A,还记录是否修改的标志M。置换时根据两个标志的值有4种不同情况的处理。


其他

 

Belady 现象:出现分配的页面数增多,缺页率反而提高的异常现象。

 

posted @ 2018-12-07 21:14  panda~  阅读(263)  评论(0)    收藏  举报