zoukankan      html  css  js  c++  java
  • 4.10-替换算法

    需要替换算法的原因

    几种常见的替换算法

    • 先进先出法 FIFO(First In First Out)

      • FIFO算法选择最早调入 Cache 的字块进行替换,它不需要记录各字块的使用情况,比较容易实现,开销小
      • 没有根据访存的局部性原理,故不能提高 Cache 的命中率 // 因为最早调入的信息可能以后还要用到,或者经常要用到,如循环程序
    • 最不经常使用法 LFU (Least Frequently Used )

      • 载入的那次不算,当是在初始化count=0了
      • Cache 满时,淘汰 计数值count(使用次数) 最小的
      • 当count相同时,可配合使用其他替换算法
    • 近期最少使用法 LRU(Least Recently Used )

      • LRU 比较好地利用访存局部性原理,替换出近期用的最少的字块
      • 它需要随时记录 Cache 中各字块的使用情况,以便确定哪个字块是近期最少使用的字块
      • 它实际上是一种推测的方法,比较复杂,一般爱用简化的方法,只记录每个块最近一次使用的时间
        • 新调入,初始化为0
        • 命中,清0
        • others 随着t的增长,++
      • 淘汰 计数值count(t时间没被使用) 最大的
      • LRU 平均命中率比 FIFO 高
    • 随机替换法

      • 随机法是随机地确定被替换的块,比较简单,可采用一个随机数产生器产生一个随机的被替换的块
      • 但它也没有根据访存的局部性原理,故不能提高 Cache 的命中率

    替换算法的抖动

    替换算法的实现方式

  • 相关阅读:
    云虚拟化
    yum puppet 并整合控制台
    Centos6.4 openNebula
    ubuntu Server LAmp环境
    openSuSE12.1 zypper LAMP
    yum puppet
    NYOJ 257 郁闷的C小加(一)
    JAVA_SE基础——17.方法的重载
    poj 1390 Blocks (经典区间dp 方块消除)
    HBase数据同步到ElasticSearch的方案
  • 原文地址:https://www.cnblogs.com/liujiaqi1101/p/12817591.html
Copyright © 2011-2022 走看看