1 教科书的翻译
首先如果在你不知道LRU时,看到LFU及其翻译,很容易理解其概念
最不经常使用,即假设有n个页面,我需要记录页面的访问次数,在淘汰时,找到访问次数最低的(通常有些解释里面会在这里加一个定义域“在一定的时间段内”)页面,也就是最不常用的页面来淘汰。
本文不讨论算法,只是讲述两者概念以及关于概念和翻译不够吻合的地方
LRU(翻译不当)
这里大致说下为啥翻译不当,也许只有我这么觉得,但是如果你先了解了LRU在了解LFU大多人应该都会产生疑问:他俩啥区别? 百度百科的一句话更是有误导: “LFU置换算法的页面访问图与LRU置换算法的访问图完全相同” 这里我本意并非断章取义,而是这句话虽然本质上没错,但是算法相同,应该强调下策略不同 LRU被翻译为最近最少使用,Google也是这么翻译的,什么是最近最少使用?距离当前时间最近访问的页面当中,最少访问的页面?? 看了代码发现这样的描述是不准确的。
- 首先从英文角度来看:LRU=Least frequently used
- Least,副词,最少,但是在后面跟一个副词时变成了形容词,用来将后面的副词词义取反
- frequently ,副词,最近
- used:使用(略)
- 首先从英文角度来看:LRU=Least frequently used
这么一看,把仨词拼一起,最近最少就出来了,但是那个最少(Least)并非是副词的最少,而是形容词
- 所以我认为的翻译,应该是:最不近的访问的页面,通顺点说,就是最早访问的页面
所以LRU的概念应该为,假设有n个页面,记录当前的访问顺序,也就是最近访问的在最前面(可以理解为栈顶,在新页或者当前被访问的旧页被使用时,入栈顶),最早访问的在最后面(栈底),在淘汰时,找到最后面的页面,也就是无论是新换进来的页还是刚刚被访问的旧页都是最近被访问的,找到最早被访问的页面来淘汰。
3 区别
上面已经阐述了概念,区别已经显而易见
LRU驱逐最久以前访问过的页面,新页面肯定是最近的
LFU驱逐使用次数最少的页面,新页面很可能是使用次数最少的