问题背景
在操作系统的内存管理里,如何节省有限的内存并为尽可能多的进程提供资源是一个很重要的问题。
内存的虚拟存储管理
,是现在最通用,最成功的方式——在内存有限的情况下,扩展一部分外存作为虚拟内存,真正的内存只存储当前运行时所用得到信息。这无疑极大地扩充了内存的功能,极大地提高了计算机的并发度。虚拟页式存储管理,则是将进程所需空间划分为多个页面,内存中只存放当前所需页面,其余页面放入外存的管理方式。
然而,有利就有弊,虚拟页式存储管理减少了进程所需的内存空间,却也带来了运行时间变长这一缺点:进程运行过程中,不可避免地要把在外存中存放的一些信息和内存中已有的进行交换,由于外存的低速,这一步骤所花费的时间不可忽略。解决的办法:采取尽量好的算法以减少读取外存的次数(进程所需的页基本上命中在主存中)
LRU算法思想
达到这样一种情形的算法是最理想的——每次调换出的页面是所有内存页面中最迟将被使用的——这可以最大限度的推迟页面调换,这种算法,被称为理想页面置换算法。可惜的是,这种算法是无法实现的。
为了尽量减少与理想算法的差距,产生了各种精妙的算法,最近最少使用页面置换算法便是其中一个。LRU算法的提出,是基于这样一个事实:在前面几条指令中使用频繁的页面很可能在后面的几条指令中频繁使用。反过来说,已经很久没有使用的页面很可能在未来较长的一段时间内不会被用到
。这个,就是著名的局部性原理——比内存速度还要快的cache,也是基于同样的原理运行的。因此,我们只需要在每次调换时,找到最近最少使用的那个页面调出内存
。
LRU实现思路
计时法
页表中每一页(cache中每个对象)增加一个域(or属性)”新鲜度量时间“,每次根据”
新鲜度量时间 “最长的规则来选择”出局“候选人,然后将新的页放入主存中,并设置其”
新鲜度量时间 “为0。每个页的”
新鲜度量时间 “根据其加入主存的时间和选择操作发生时的时间来确定。如果hit主存中某页,则设置
计数法
以上两个方法仅仅考虑使用标识来进行算法判断,每次存取都要对所有页进行计算和判断。没有考虑选择一个合适的数据结构。
链表法
其他相关算法
LRU算法算是一种集合元素选择算法(or置换选择算法)
cache算法
,处理同样问题的算法还有FIFO,NRU等。
分享到:
相关推荐
在C语言中实现LRU算法,需要理解数据结构和算法的基础知识,以及如何在C语言中有效地管理内存。 首先,LRU算法的核心是数据结构的选择。通常使用双向链表来存储数据,因为双向链表允许我们快速地插入和删除元素,...
LRU算法就是在这个过程中发挥作用,选择最近最久未使用的页面优先进行替换。 LRU算法的基本思想是:当内存满时,新进来的页面会替换掉最近最少使用的页面。这里的“最近”是指最近一次被访问的时间,“最少使用”是...
LRU (Least Recently Used) 算法是一种常用的页面替换策略,用于管理计算机内存中的页面。在虚拟存储系统中,由于物理内存有限,当所有页面无法同时驻留在内存时,LRU 算法则用于决定将哪个页面换出到磁盘。它的基本...
在操作系统中,当内存不足以容纳所有活动页面时,LRU算法会选择最近最久未使用的页面进行淘汰,以腾出空间加载新的页面。 在Java中实现LRU算法,通常会使用数据结构如HashMap或LinkedHashMap来存储页面及其访问信息...
LRU算法是一种常见的虚拟内存管理策略,它根据页面的使用历史来决定替换哪个页面。当内存中的页面被新页面占用时,LRU算法会优先淘汰最近最久未使用的页面。 实验内容包括实现LRU算法的两种不同变体:计数器实现和...
当内存不足以容纳所有数据时,LRU算法会选择最近最少使用的数据进行淘汰。它的基本思想是:如果一个数据最近被访问过,那么它在未来的访问概率会比较高。LRU算法的核心在于维护一个有序的数据结构,例如链表或者哈希...
Java LRU算法介绍与用法示例 LRU(Least Recently Used,近期最少使用)算法是一种常用的缓存淘汰算法,它的思想是将长时间没有被利用的数据进行删除。该算法可以应用于缓存系统,例如在用户使用联网的软件的时候,...
近期最少使用算法
### LRU算法(Least Recently Used)在C语言中的实现 #### 概述 LRU算法是一种常用的缓存淘汰策略,在计算机科学中广泛应用于操作系统、数据库系统以及Web浏览器等场景。其核心思想是当缓存满时,优先淘汰最近最少...
在操作系统中,LRU算法用于决定何时将页面从内存移出,以便为新的页面腾出空间。当内存中的页面数量不足以容纳所有需要的页面时,LRU算法会选择最长时间没有被访问的页面进行替换。 实验目的是通过编程模拟LRU算法...
LRU(Least Recently Used)算法是一种常用的页面替换算法,用于解决...以上就是关于LRU算法及其C++实现的基本介绍。在理解这个算法的基础上,可以通过阅读`LRU.cpp`文件中的具体代码,进一步了解其细节和优化点。
LRU算法通过维护一个页面访问历史来跟踪每个页面的使用情况,当内存满时,它会优先淘汰那些长时间未被访问的页面。 在电子科技大学的这个实验报告中,学生需要设计并改进LRU算法的实现。实验的目标是让用户自定义页...
操作系统之LRU算法(Java) LRU(Least Recently Used,最近最少使用)算法是一种常用的页面置换算法,用于操作系统中管理内存页面。该算法的基本思想是:当进程在 CPU 上运行时,如指令中涉及逻辑地址时,操作系统...
基于C语言的FIFO和LRU算法的实现。
1.资源包含LRU算法整个项目,可直接在vs2019上运行项目,如果版本不对可选择把项目中cpp文件复制到自己的vs中运行 2.LRU 算法的设计原则是:如果一个数据在最近一段时间没有被访问到,那么在将来它被访问的可能性也...
LRU算法和FIFO算法合体
在实际操作系统中,LRU算法可能需要更复杂的数据结构和算法来支持,例如使用哈希表来加速页面查找,或者使用位图来跟踪页面状态。然而,这个简单的C语言实现提供了一个直观的理解基础,展示了LRU算法的基本操作和...
本文将详细介绍一个用C语言实现的LRU算法示例代码,并对其实现细节进行深入解析。 #### 二、LRU算法概述 LRU算法的核心思想是:当缓存满时,优先淘汰最近最少使用的数据。这里的“最近最少使用”是指在最近一段...
### LRU算法 #### 1. LRU算法简介 LRU(Least Recently Used)算法是一种常用的内存管理与虚拟缓存置换算法,其基本思想是当缓存满时,优先淘汰最近最少使用的页面。这种算法能够很好地利用程序访问的局部性原理,...
### LRU算法(操作系统) #### 一、LRU算法简介 LRU(Least Recently Used,最近最少使用)算法是一种常用的操作系统存储器管理中的页面置换算法。它的基本思想是:当内存空间不够时,系统会将最近最久未使用的...