操作系统的虚拟存储器管理技术中,有一项比较重要的分支叫分页存储管理。分页管理是在页架中装入一些需要使用或过去使用过的页面,但是页架的数量是有限的,这里就会用到一些页面置换算法,使得页面访问的效率提高。判断一个置换算法优劣的指标就是缺页率,缺页是指当前的页架中没有需要访问的页面,而需要将该页面加入其中一个页架。缺页率=访问缺页次数/访问总次数。
先进先出算法(FIFO)是一个实现起来比较简单的页面置换算法,其基本原则是“选择最早进入主存的页面淘汰”,理由是最早进入的页面,其不再使用的可能性比最近调入的页面要大。
理论上来说,如果分配的页架数增加的话,缺页率是会减少,但是FIFO算法对于一些特殊的页面访问序列会有随着分给的页架数增加,缺页率也增加的异常现象。
LRU:Least Recently Used最近最少使用算法。
以上面的例子来解释一下:
A | B | C | D | A | B | E | A | B | C | D | E |
A | B | C | D | A | B | E | A | B | C | D | E |
A | B | C | D | A | B | E | A | B | C | D | |
A | B | C | D | A | B | E | A | B | C | ||
× | × | × | × | × | × | × | × | × | × |
将最近最少使用的替换出去。(若命中,则在模拟的时候可以将其写到最后,每次都将最前面的替换)
OPT:optimal page replacement (最佳置换算法、理想置换算法)
所选择的被淘汰页面将是以后永不使用的,或者是在最长时间内不再被访问的页面,这样可以保证获得最低的缺页率。
A | B | C | D | D | D | E | E | E | E | E | E |
A | B | B | B | B | B | B | B | B | D | D | |
A | A | A | A | A | A | A | C | C | C | ||
× | × | × | × | × | × | × |
最后C、D置换A或B无所谓,都不会影响E,只要不将E置换出来就行