LRU是Least Recently Used 近期最少使用算法。
关于操作系统的内存管理,如何节省利用容量不大的内存为最多的进程提供资源,一直是研究的重要方向。而内存的虚拟存储管理,是现在最通用,最成功的方式—— 在内存有限的情况下,扩展一部分外存作为虚拟内存,真正的内存只存储当前运行时所用得到信息。这无疑极大地扩充了内存的功能,极大地提高了计算机的并发度。虚拟页式存储管理,则是将进程所需空间划分为多个页面,内存中只存放当前所需页面,其余页面放入外存的管理方式。
然而,有利就有弊,虚拟页式存储管理减少了进程所需的内存空间,却也带来了运行时间变长这一缺点:进程运行过程中,不可避免地要把在外存中存放的一些信息和内存中已有的进行交换,由于外存的低速,这一步骤所花费的时间不可忽略。因而,采取尽量好的算法以减少读取外存的次数,也是相当有意义的事情。
对于虚拟页式存储,内外存信息的替换是以页面为单位进行的——当需要一个放在外存的页面时,把它调入内存,同时为了保持原有空间的大小,还要把一个内种调动越少,进程执行的效率也就越高。那么,把哪个页面调出去可以达到调动尽量少的目的?我们需要一个算法。
其实,达到这样一种情形的算法是最理想的了——每次调换出的页面是所有内存页面中最迟将被使用的——这可以最大限度的推迟页面调换,这种算法,被称为理想页面置换算法。可惜的是,这种算法是无法实现的。
为了尽量减少与理想算法的差距,产生了各种精妙的算法,最少使用页面置换算法便是其中一个。LRU算法的提出,是基于这样一个事实:在前面几条指令中使用频繁的页面很可能在后面的几条指令中频繁使用。反过来说,已经很久没有使用的页面很可能在未来较长的一段时间内不会被用到。这个,就是著名的局部性原理——比内存速度还要快的cache,也是基于同样的原理运行的。因此,我们只需要在每次调换时,找到最少使用的那个页面调出内存。这就是LRU算法的全部内容。
LRU在电子系统中的解释:
Line Replaceable Unit — LRU,电子系统中常采用模块化设计,这种可更换的模块单元则被叫做LRU,中文名称是“线性可更换单元”
例子
LRU(least recently used)最少使用。
假设 序列为 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
又如:
考虑下述页面走向:
1,2,3,4,2,1,5,6,2,1,2,3,7,6,3,2,1,2,3,6
1 1
2 21
3 321
4 432 1
2 243 2
1 124 3
5 512 4
6 651 2
2 265 1
1 126 5
2 216
3 321 6
7 732 1
6 673 2
3 367 3
2 236 7
1 123 6
2 213
3 312
6 631 2
发生缺页中断的次数为15。在LRU算法中,最少使用的页面被先换出。当页6要调入时,内存的状态为5、1、2,考查页6之前调入的页面,分别为5、1、2,可见2为一段时间内使用最少的,本次应换出,然后把页6调入内存。
相关推荐
LRU算法LRU算法LRU算法LRU算法
LRU算法实现LRU算法实现LRU算法实现LRU算法实现LRU算法实现
使用c语言是实现的LRU算法,带测试用例,供大家学习参考使用
这个是关于lru算法实验报告,大家欢迎使用
该资源是Java实现LRU算法的相关代码,将页面序号和进程分配的模块数,运行出具体的变化过程,真实可靠,可实现。
1.资源包含LRU算法整个项目,可直接在vs2019上运行项目,如果版本不对可选择把项目中cpp文件复制到自己的vs中运行 2.LRU 算法的设计原则是:如果一个数据在最近一段时间没有被访问到,那么在将来它被访问的可能性也...
编写程序实现LRU算法及其近似算法,并分析各算法的时间复杂度、空间复杂度和实现难度;通过随机生成页面访问序列,测试所实现算法的页错误率,并加以比较和分析。 此资源含完整代码和完整实验报告(加上你的学号姓名...
LRU算法 1.cpp 1.exe LRU FIFO REPORTMENT
基于C语言的FIFO和LRU算法的实现。
操作系统中的一个算法 C++实现的,Lru算法
用C语言实现的OPT和LRU算法,下载后直接用VC++6.0打开即可编译运行。亲测可用。
LRU算法 1. LRU算法的实现 2. 模拟进程调度算法的实现 3. 通过编写程序实现LRU算法及模拟进程调度程序,并调试运行出来。加深对以上两种算法的理解,培养动手实践的能力。,进一步熟悉LRU算法和进程调度的过程. 进程...
LRU 算法(c语言简单的实现)利用队列等形式!
LRU算法和FIFO算法合体
近期最少使用算法
根据这个LRU算法的基本原理设计一段程序来模拟实现LRU算法对页面进行置换的过程与结果。程序运行时首先输入页的架数,然后根据架数输入访问序列,然后将每一步的结果打印出来。
LRU算法的java实现
操作系统之LRU算法(java)(csdn)————程序
lru算法操作系统实验lru算法c?c++shiyan
模拟页式虚拟存储管理中硬件地址变换和缺页中断,并用LRU算法处理缺页中断