页面置换算法 LRU & LFU 算法

页面置换算法介绍

评价一个页面替换算法好坏的标准主要有两个,一是命中率要高,二是算法要容易实现。要提升一个页面替换算法的命中率,首先要使这种算法能正确反映程序的局部性,其次是这种算法要可以充分利用主存中页面调度状况的历史信息,或者可以预测主存中将要发生的页面调度状况。 
  页面替换算法主要用于以下几个地方: 
  (1) 虚拟存储器中,主存页面(或程序段)的替换。 
  (2) Cache中的块替换。 
  (3) 虚拟存储器的快慢表中,快表的替换。 
  (4) 虚拟存储器中,用户基地址寄存器的替换。 android

 

LFU算法

    近期最少使用算法,即LFU算法(Least Frequently Used algorithm)。这种算法选择近期最少访问的页面做为被替换的页面。显然,这是一种很是合理的算法,由于到目前为止最少使用的页面,极可能也是未来最少访问的页面。该算法既充分利用了主存中页面调度状况的历史信息,又正确反映了程序的局部性。可是,这种算法实现起来很是困难,它要为每一个页面设置一个很长的计数器,而且要选择一个固定的时钟为每一个计数器定时计数。在选择被替换页面时,要从全部计数器中找出一个计数值最大的计数器。所以,一般采用以下一种相对比较简单的方法。算法

    核心思想:若是一个数据在最近一段时间内使用次数不多,那么在未来一段时间内被使用的可能性也很小“缓存

    传统实现:ui

    

        1. 新加入数据插入到队列尾部(由于引用计数为1);spa

        2. 队列中的数据被访问后,引用计数增长,队列从新排序;.net

        3. 当须要淘汰数据时,将已经排序的列表最后的数据块(访问次    数最少的块)删除。3d

    实现方式:netty

        可用一个小顶堆+hashmap,来实现;blog

       小顶堆对访问次数排序排序

       hashmap对每一个缓存节点访问次数来更新
 

 

 

      改良版算法:Window-LFU(置换指定时间内,按照LFU规则排序淘汰数量

     

  

        1)记录了过去W个访问记录;

        2)须要淘汰时,将W个访问记录按照LFU规则排序淘汰

        举例以下:

            假设历史访问记录长度设为9,缓存大小为3,图中不一样颜色表明针对不一样数据块的访问,同一颜色表明            针 对同一数据的屡次访问。

            样例1:黄色访问3次,蓝色和橘色都是两次,橘色更新,所以缓存黄色、橘色、蓝色三个数据块

            样例2:绿色访问3次,蓝色两次,暗红两次,蓝色更新,所以缓存绿色、蓝色、暗红三个数据块

         须要维护一个队列,记录数据的访问流历史;须要排序。          

          Window-LFU只记录一部分的访问历史记录,不须要记录全部的数据访问历史,所以内存消耗和排序消耗都            比LFU要低。

 

LRU算法

     最久没有使用算法,即LRU算法(Least Recently Used algorithm)。这种算法把近期最久没有被访问过的页面做为被替换的页面。它把LFU算法中要记录数量上的"多"与"少"简化成判断"有"与"无",所以,实现起来比较容易。 

     核心思想:若是在一段时间内长时间不访问的页面未来也不会访问

    传统实现原理:

        假设 序列为 4 3 4 2 3 1 4 2

        物理块有3个 则

        首轮 4调入内存 4

        次轮 3调入内存 3 4

        以后 4调入内存 4 3

        以后 2调入内存 2 4 3

        以后 3调入内存 3 2 4

        以后 1调入内存 1 3 2(由于最少使用的是4,因此丢弃4)

        以后 4调入内存 4 1 3(原理同上)

        最后 2调入内存 2 4 1

LRU算法扩展,能够看个人另外一篇博文:

    http://my.oschina.net/manmao/blog/601698

LRU算法简单实现:

https://mp.weixin.qq.com/s?__biz=MzAxNDI5NzEzNg==&mid=2651157126&idx=1&sn=aec050aae2efc427c1397f4a7e2fde6a&chksm=8064a3d9b7132acff5614b7c9fbcb60770a52970fa4f8b76e1ab06f8ce803040f998e3f42e95&scene=0&key=1a6dc58b177dc626a128add5b7c4924b9be81733861d4c335d100d3f533c6dd072c017e31903757829134be3cbf22354&ascene=14&uin=NzkwODcyMzQx&devicetype=android-19&version=26031732&nettype=WIFI&pass_ticket=b1FAKwVG%2FaONUhFzptp9fVyQ%2BjKJN0WTZmJ10%2FqDvgH1E3rS%2BVODI%2F%2F%2FHLW%2BF%2BBc

相关文章
相关标签/搜索