并行多核体系结构基础——第五章需要掌握的页面替换算法

1、OPT(Optimal Replacement Algorithm)算法

一句话概括:替换后置位最久会被访问到的元素

由Belady提出,并行书上喜欢称Belady最优算法,又称理想淘汰算法、最佳页面算法等。其基本思想是:总选择那些以后不再需要的或将来最长时间之后才会用到的页面进行淘汰。

例:设系统为某进程分配3个物理块,并且该进程运行的过程中,对页面的访问序列为:2、3、4、5、2、3、1、2、3、4、5、1。

解:
首先把2、3、4三个页面装入内存中。当访问到5的时候,发现它不在内存中,于是产生页面中断。再根据OPT算法将页面4淘汰,因为4是最长时间之后才会被访问到的页面。依此类推,此进程运行中产生了4次中断,其中断率4/12=33%

技巧:从页面走向序列中当前访问页面开始顺着数,淘汰掉在页架的页面中最长访问的一个,然后把当前访问页面补如进去。
你可以理解为:”向后看“/”向后数“/”顺着数“

image.png

2、FIFO(First Input First Output)算法

一句话概括:先进先出

是最早出现的页面置换算法,也是最直观的置换算法。算法的思想是淘汰最先进入内存的页面,也就是选择一个在内存中驻留时间最久的页面予以淘汰。

以上题的要求为例

解:
首先把2、3、4三个页面装入内存,根据FIFO算法淘汰掉页面2,因为页面2是最先进入内存的,然后装入页面5……以此类推。

技巧:数每个页架中的页面出现次数,即是它驻留的时间,淘汰次数最多的一个即可,然后装入新的页面。

分配3个物理块时,命中3次。

image.png

Belady现象:FIFO置换算法会出现一种异常现象,即在相同的进程页面访问次序下,进程得到的物理块数增多时,命中(要访问的页面在内存里)次数有时不但不随之增加,反而会有所下降

分配4个物理块时,命中2次。

image.png

3、LRU(Least Recently Used)算法

一句话概括:替换最近最久未被访问的元素

LRU(Least recently used,最近最少使用)算法根据数据的历史访问记录来进行淘汰数据,其核心思想是“如果数据最近被访问过,那么将来被访问的几率也更高”。

是最佳置换算法的一种近似算法。该算法淘汰的页面是在最近一段时间里较久未被访问的那一页。它的基本思想是根据程序执行时所体现出的局部性来考虑的,即那些刚被使用过的页面,可能马上还要被使用,而那些在较长时间里未被使用的页面,一般说可能不会马上使用到。

例:设系统分配给某进程3个物理块,页面访问序列为:4、3、2、1、4、3、5、4、3、2、1、5。

解:
首先,该进程运行时先将4、3、2三个页面装入内存,随后根据LRU算法淘汰页面4,装入页面1。这是因为4是最久未被访问到的页面。

技巧:沿着页面走向在当前访问页面的位置开始逆着数,最后一个就是淘汰的一个页面。
例如:4、3、2、1,当访问到页面1时,淘汰页面4。

image.png

4、MRU(Most Recently Used)算法

一句话概括:替换前一个被访问过的元素

转自百度贴吧:【技术】关于MRU(Most recently used)算法【雨停的天吧】_百度贴吧 (baidu.com)

首先,什么是MRU? 说白了就是,当有一个新的页要保存的时候,把最后一个 命中 或 上一个进入 内存的东西 替换掉。 再直接点就是,把它前面一个要访问的数据踢出去,然后保存自己.

举个例子, 有这么一个 内存,大小为3, 而 9,36,3,13,9,36,25 为存储队列。

刚开始,内存未满,9,36,3 依次保存没问题。 当13来的时候,要把3替换掉(注意,是要把最后一个保存的替换掉!), 此时内存内为9,36,13。 然后9,36,依次命中。 再然后25来了,要替换的是36!而不是13!(虽然13是最后一个被保存的,但36是最后一个被访问的!),所以,内存的序列此时为 9,13,25。

另一个抽象点的例子,比如一个序列a,b,c,d,e,f,…… 如果b要被保存,而空间已满就把a踢出去(无论A是早就被保存,这次命中 还是 这次刚被保存),如果C要被保存,而空间已满就把b踢出去,以此类推。

原文地址:https://www.cnblogs.com/wangzheming35/p/15632522.html