1、先进先出算法: 即FIFO算法(First-In First-Out algorithm)。这种算法选择最先调入主存储器的页面作为被替换的页面。它的优点是比较容易实现,能够利用主存储器中页面调度情况的历史信息,但是,没有反映程序的局部性。因为最先调入主存的页面,很可能也是经常要使用的页面。 近期最少使用算法: 即LRU算法(Least Recently Used algorithm)。这种算法选择近期最少访问的页面作为被替换的页面。显然,这是一种非常合理的算法,因为到目前为止最少使用的页面,很可能也是将来最少访问的页面。该算法既充分利用了主存中页面调度情况的历史信息,又正确反映了程序的局部性。
2、但是,这种算法实现起来非常困难。它要为每个页面设置一个很长的计数器,并且要选择一个固定的时钟为每个计数器定时计数。在选择被替换页面时,要从所有计数器中找出一个计数值最大的计数器。因此,通常采用另外一种变通的办法,就是下面的LFR算法。 最久没有使用算法: 即LFU算法(Least Frequently Used algorithm)。这种算法把近期最久没有被访问过的页面作为被替换的页面。它把LRU算法中要记录数量上的“多“与“少“简化成判断“有“与“无“,因此,实现起来比较容易。LFU算法的具体实现方法将在下一节中介绍。 最优替换算法: 即OPT算法(OPTimal replacemant a
3、lgorithm)。上面介绍的几种页面替换算法主要是以主存储器中页面调度情况的历史信息为依据的,它假设将来主存储器中的页面调度情况与过去一段时间内主存储器中的页面调度情况是相同的。显然,这种假设不总是正确的。最好的算法应该是选择将来最久不被访问的页面作为被替换的页面。这种替换算法的命中率一定是最高的。这就是最优替换算法,简称OPT算法。,替换算法:FIFO 和LRU 1。FIFO算法:把最先调入CACHE或页面的字块替换出去 2。LRU算法:把一组中近期最少使用的字块替换出去。它需要随时记录 CACHE存储器或页面中各个字块的使用情况,以确定哪个字块是近期最少 使用的字块。,原始状态,替换7 访问5 访问1 替换6,0 1 2 3 4 5 6 7,7 0 1 2 3 4 5 6,5 7 0 1 2 3 4 6,1 5 7 0 2 3 4 6,6 1 5 7 0 2 3 4,例1:假设主存只有a,b,c三个页框,组成a进c出的FIFO对列,访问页面的序列是 0,1,2,4,2,3,0,2,1,3,2号用列表法求出FIFO和LRU算法的命中率。,某主存对页面要求的序列为:3,4,2,6,4,3,7,4,3,6,3,4,8,4,6 1:设主存容量为三个页面,求FIFO和LRU算法时各自的命中率? 2:当主存容量增加到四个页面,命中率又为多少? 假设开始时主存为空。,