操作系统--页面置换算法

###最佳置换算法
本人只是简单的列举三种算法的解题过程,但是实际问题得具体分析,感谢刘静文学姐,对缺页率的计算加已改正。

假设系统给某进程分配了三个物理块,有以下的页面号引用串:

alt

则前三次装入内存并未发生中断,但是缺页,如下:

alt

第四次时,在页中未发现2,发生缺页中断,根据最佳置换算法,发生一下操作:
即舍弃内存页中引用串下次出现的最大值

alt
== <7,0,1> -> <2,0,1> ==

第五次时0存在,不会发生缺页中断

第六次3在内存页中未找到,缺页中断发生,置换:

alt
== <2,0,1> -> <2,0,3> ==

……
依次类推,最后结果如下:

alt

<2,7,1>

缺页率为:
前三次未发生缺页中断,但是需要调入内存,仍属于缺页范围。
前三次加上红框缺页次数6 总次数17 f=(6+3)/17×100%=52.9%

FIFO 算法

先进先出算法
还是以前的数据,有三个物理块,数据如下,且前三次不会发生缺页中断:

alt

第四次时发生,缺页中断,先进先出算法:7先进的,所以7先出:

alt
== <7,0,1> -> <2,0,1> ==

第5次时未发生缺页中断
第六次时,3未找到,发生缺页中断,如下:

alt
== <2,0,1> -> <2,3,1> ==

依次类推,最终结果如下:

alt
<7,1,2>

缺页率计算如下:
前三次未发生缺页中断,但是需要调入内存,仍属于缺页范围。
前三次加上红框缺页次数10 总次数17 f=(10+3)/17×100%=76.5%
这个算法比上者算法接近多一倍

##LRU算法(最近最久未使用)

还是如上数据,前三次结果未改变:
alt

第四次时,和FIFO算法一致:

alt
== <7,0,1> -> <2,0,1> ==

第五次未改变,第六次发生缺页中断,如下,最好比较FIFO和LRU的区别:

alt
== <2,0,1> -> <2,0,3> ==

依次类推,最后结果如下:

alt
<1,7,2>

缺页率计算如下:
前三次未发生缺页中断,但是需要调入内存,仍属于缺页范围。
前三次加上红框缺页次数8 总次数17 f=(8+3)/17×100%=64.7%