操作系统——虚拟存储管理

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

基本概念
    由于程序执行的时间局部性及空间局部性,一次性及驻留性在程序运行时不是必须的。
    所谓“虚拟存储器”,是指具有请求调入功能和置换功能,能从逻辑上对内存容量加以扩充的一种存储器系统。
    虚拟存储管理下
        内存逻辑容量由内存容量和外存容量之和所决定
        运行速度接近于内存速度
        每位的成本却接近于外存。


实现

    虚拟的实现建立在离散分配存储管理基础上
    方式:请求分页/请求分段系统
    细节:分页/段机构、中断机构、地址变换机构、软件支持

特征

    多次性、对换性、虚拟性。

请求分页存储管理方式

换入和换出基本单位都是长度固定的页面



【例子】

2是由系统根据后面的外存地址调入,系统先看物理块号没有则从后面的地址去找。调入内存

缺页中断机构

每当要访问的页面不在内存时,便产生一缺页中断通知OS,OS则将所缺之页调入内存。

中断经过的步骤:

保护CPU环境–分析中段原因–转入缺页中断处理程序–恢复CPU环境



内存分配

最小物理块数的确定–物理块的分配策略–物理块的分配算法

在请求分页系统中的外存分为:

对换区:连续存放数据,读写速度较快

文件区:离散分配方式,读写想、速度相对较慢。

发生缺页时,系统应从何处将缺页调入内存,分成三种情况:



系统拥有足够的对换区空间:可以全部从对换区调入所需页面,以提高调页速度。

系统缺少足够的对换区空间:凡不会被修改的文件,直接从文件区调入;换出时不用换,再调入时仍从文件区调入。可能被修改的部分,换出时需调到对换区,换入时从对换区调入。

系统缺少足够的对换区空间,这时凡是不会被修改的文件,都直接从文件区调入;而当换出这些页面时,由于它们未被修改而不必再将它们换出,以后再调入时,仍从文件区直接调入。但对于那些可能被修改的部分,在将它们换出时,便须调到对换区,以后需要时,再从对换区调入。

UNIX方式。由于与进程有关的文件都放在文件区,故凡是未运行过的页面,都应从文件区调入。而对于曾经运行过但又被换出的页面,由于是被放在对换区,因此在下次调入时,应从对换区调入。由于UNIX系统允许页面共享,因此, 某进程所请求的页面有可能已被其它进程调入内存,此时也就无须再从对换区调入。

页面置换算法

缺页率:页面调入次数(缺页次数)/总的页面使用次数

1.最佳置换算法(仅限于理论上,作为参照标准)

2.先进先出置换算法(FIFO)

先进入的先淘汰

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

Belady现象的原因:FIFO算法的置换特征与进程访问内存的动态特征矛盾,即被置换的页面并不是进程不会访问的。(个人理解:当分配的页面增多时,保留的大多是没用的,下一次用到的都被淘汰了,又需要重新调入)


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


具体实现方法:




4.轮转算法(clock)

又称最近未使用算法

每个页设一个使用标志位(use bit),若该页被访问则将其置为1。

设置一个指针,从当前指针位置开始按地址先后检查各页,寻找use bit=0的页面作为被置换页。

若指针经过的页use bit=1,修改use bit=0(暂不凋出,给被用过的页面驻留的机会 ),指针继续向下。到所有页面末尾后再返回队首检查。

改进clock

改进:考虑到对没访问过的页面再细分是否修改过的不同情况,减少因修改造成的频繁I/O操作

你可能感兴趣的:(操作系统——虚拟存储管理)