LRU(最近最少使用算法) and MRU(最近最常使用算法)
所谓的LRU(Least recently used)算法的基本概念是:当内存的剩余的可用空间不够时,缓冲区尽可能的先保留使用者最常使用的数据,换句话说就是优先清除”较不常使用的数据”,并释放其空间.之所以”较不常使用的数据”要用引号是因为这里判断所谓的较不常使用的标准是人为的、不严格的.所谓的MRU(Most recently used)算法的意义正好和LRU算法相反.
下面我们通过Oracle 9i Cache中对LRU和MRU的使用来看一下两者在缓冲区工作机制中的作用和区别:
在Oracle 9i中有LRU List的概念: 我们可以把LRU List想象成是一连串的缓冲区集合,两端分别是LRU端和MRU端, 当数据库从磁盘上读取数据放入缓冲区时,系统必须先确定缓冲区中有free buffers,这个时候Oracle 9i会扫描LRU List,扫描的基本原则是:
1. 从LRU端到MRU端;
2. 当扫描到free buffer或已扫描的缓冲区数目超过临界值时,就会停止扫描动作;
如果在扫描过程顺利的在LRU List中找到了free buffer,那么Oracle 9i就把从磁盘读出的数据写到free buffer中然后把free buffer加到LRU List的MRU端.
那如果扫描过程没有在LRU List中找到free buffer怎么办?当然是从LRU List的LRU端开始清除缓冲区,如此一来就可以腾出新的空间了.
下图就是一个例子:
使用者查询数据A,初始的时候LRU List中没有数据A,于是Oracle 9i到磁盘读取A,然后放到LRU List的MRU端,使用者再从LRU List中读取数据A,同理对于B,C…当LRU List满了以后,如果使用者查询N,此时N不在LRU List中而且LRU List中已经没有free buffer了,此时Oracle 9i就开始从LRU端淘汰A以腾出空间存放N.
我们再来看另外一种情况:
在State 3之后,恰好使用者持续的查询A—这将会导致A一直被放置在靠近MRU端的缓冲区,结果将如图State m’所示,你会发现图2的State m’与图1的State m缓冲区存放的数据完全一样但是存放位置不一样.此时LRU List满了,如果再放N的时候LRU List`淘汰的是B,因为A的查询率高于B,所以LRU List让A在缓冲区中呆上较长的时间而先淘汰掉”较不常用的”的B.
分享到:
相关推荐
操作系统,最近最久未使用算法(c语言版),有什么不足,bug,请建议,留言。
实验6虚拟内存置换算法——最佳置换算法(OPI)、先进先出(FIFO)、最近最久未使用算法(LRU), 调试可运行,,含实验报告,含具体流程图 ,有注释和变量解释 含本人实验报告,有具体流程图,实验课上写的,有更好的想法...
算法笔记 可供各学校计算机上机复试及各OJ平台刷题使用算法笔记 可供各学校计算机上机复试及各OJ平台刷题使用算法笔记 可供各学校计算机上机复试及各OJ平台刷题使用算法笔记 可供各学校计算机上机复试及各OJ平台刷题...
(5) 最近最不经常使用算法(NUR) 命中率=1-页面失效次数/页地址流长度 <程序设计> 本实验的程序设计基本上按照实验内容进行。即首先用 srand()和 rand()函数定 义和产生指令序列,然后将指令序列变换成相应的页地址流,...
是使用OPT算法,最近最久未使用算法编写的程序,还附加计算缺页中断次数和缺页率。非常适合大家下载,请大家支持下。
扫雷程序 扫雷程序 很简单 使用 算法简单
使用算法助手阻止弹窗演示
LRU 最近最久未使用页面置换算法操作系统课程设计报告 LRU(Least Recently Used)最近最久未使用页面置换算法是一种常用的页面置换算法,用于操作系统中页面替换的决策。该算法的核心思想是选择最近最久未使用的...
非常实用的时差定位算法,与泰勒算法有区别
使用算法的分析与程序设计
本实验主要涉及五种页面置换算法:OPT(最优页面置换算法)、FIFO(先进先出算法)、LRU(最近最少使用算法)、Clock(时钟算法)以及其改进型Clock算法。下面将详细讨论这些算法。 1. **最优页面置换算法 (OPT)**...
本实验报告主要探讨了三种经典的页面置换算法:最佳置换算法(OPT)、先进先出算法(FIFO)以及最近最久未使用算法(LRU)。 1. 最佳置换算法(Optimal Page Replacement Algorithm, OPT): OPT算法的目标是最小...
在分班阶段,我们使用算法将学生分配到不同的班级。这个阶段的目的是尽量减少班级之间的差异,使得每个班级的学生人数和课程选择尽量均衡。我们可以使用 various algorithms such as k-means clustering, ...
采用案例形式,以智能算法为主线,讲解了遗传算法、免疫算法、退火算法、粒子群算法、鱼群算法、蚁群算法和神经网络算法等最常用的智能算法的MATLAB实现。...从而快速提高使用算法求解实际问题的能力。
传说中的黑书之一,对于希望在算法方面有一些提升的童鞋都值得一看,不然就落后了。
对于开发者来说,能够熟练阅读和理解这些文档是使用算法库的关键。 C++实现的算法源代码是计算机科学领域的重要资源。它们不仅包含了一系列强大的算法,而且这些算法都是经过优化、测试和文档化的,能够为开发者...
设计一个虚拟存储及内存工作区,使用先进先出算法(FIFO),理想型淘汰算法(OPT),最近最久未使用算法(LRU)计算不同内存容量下的缺页率,模拟表示出不同算法内存中页面的变化情况,并对不同内存容量下不同算法的...
本篇文章将深入探讨四种常见的页面置换算法:OPT(最佳页面置换算法)、FIFO(先进先出算法)、LRU(最近最久未使用算法)和LFU(最不经常使用算法)的C语言实现。 **1. OPT(最佳页面置换算法)** OPT算法被认为是...
该工程具体是在codeblock上面实现了操作系统课程上讲解的页面置换算法,包括先进先出(FIFO)、最佳置换算法(OPT)、最久最近未使用算法(LRU)。 具体实现功能有: 1、建立相应的数据结构 2、在屏幕上显示页面...
本程序涵盖了五种常见的页面置换算法:最佳置换算法(OPT)、先进先出算法(FIFO)、最近最久未使用算法(LRU)、随机置换算法(RAND)以及两种时钟算法(简单时钟和改进时钟)。下面将对这些算法进行详细介绍,并...