晦涩的翻译LRU (Least Recently Used) - 最近最少使用?

    在学习缓存的原理时候,会碰到这样一种情况,即当缓存不命中且缓存已满的情况,需要选择将缓存中的某一数据块替换为仍在内存中的目标数据块,但是选择缓存中的哪块被替换更高效呢?就有这个替换策略LRU (Least Recently Used)。


    这里插一段,一般网上的搜索结果包括百度百科给的解释都是将LRU定义为针对内存管理的页面替换算法,即针对的是虚拟内存管理时的缺页现象。而我在第一段描述的是说LRU处理CPU和内存之间的缓存(cache)不命中现象。其实,二者的本质都是利用缓存和局部性的原理,只不过习惯上的叫法不同。我参考的是《深入理解计算机系统》这本书,书里介绍的很清楚,而且值得一提的是,该书指出LRU是作为缓存不命中的替换策略,但是对于缺页的内存替换策略,书中指出“操作系统对DRAM缓存使用了更复杂精密的替换算法 [P537]”,显然缺页的内存替换策略应该不是LRU。所以,本文说的LRU仅是针对SRAM缓存不命中的替换策略。


    好了,言归正传,回头博文的题目,不知道大家对LRU(Least Recently Used)的翻译有没有感到过很困惑不解?所有的检索结果,包括《深入理解计算机系统》书中对其中文翻译的都是“最近最少使用”。首先一个最大的逻辑困惑,“最少”这个描述对应的应该是频度吧?但是我们知道,LRU的算法实现并未涉及到频度(这里略去LRU的算法描述,默认已知,一般用一个链表加一个哈希表实现)。那么你这个“最近最少”的描述真的让人困惑啊。。实际上,了解算法后的直观感觉就是,它的意思好像就是替换最久远(或最旧)的缓存中的块。那么就要问下 least recently 到底该怎么翻译了?这里我没有去过于推敲英语用法,但以过去的英文教育基础,我觉得这里least修饰recently是想表示“最不是最近的”或者说“非最近的”、“最久远的”,按这种翻译我觉得才最贴近LRU的原理描述。


    最后,想起来大学时曾经读过一篇好文,里面讲到这样一件事。说一个小学生问老师,有理数为什么叫“有理数”啊?老师回答有理数就是有道理的数。这个回答显然是不令人满意的,但是我们大多数人也就得过且过吧,不去较真了。但是,有心人却继续挖掘找到了答案。原来,有理数英文是“rational number”,我们的翻译取了rational的常用义“合理的”,但实际上rational还有一个意思是“可比的”,这个意思很好的解释了有理数即是可比数(有理数定义:能表示成两个整数之比的数是有理数)。说到这里,想必每个人都会有些感慨,日后在遇到困惑时,我们是不是也应该多推敲推敲呢。

你可能感兴趣的:(cache,LRU,缓存,内存管理,缺页)