缓存算法

简介: 缓存、页面置换算法

缓存生效原理

访问局部性原理
访问局部性原理可以总结为以下三点

  1. 空间局部性

空间局部性为最近访问的数据在不远的将来会再次被访问。

  1. 时间局部性

访问趋向于在地址空间中聚集(比如:访问数据或者循环操作)。

  1. 顺序局部性

指令趋向于按顺序访问。

访问局部性原则是的计算机系统可以使用少量的快速存储器加速对们速存储的高效访问。

典型术语

  1. 命中

要访问的信息存在与给定层次的存储器中。

  1. 失效

要访问的信息在给定的存储器中没有找到。

  1. 命中率

在给定层次存储器中找到所需信息的比率。

  1. 失效率

在给定层级存储器中没有找到所需信息的比率。

  1. 命中时间

在给定层次的存储器中访问信息需要的时间。

  1. 失效惩罚

处理一次失效所需的时间,包括在较高层次存储器中替换一个块的时间和将所需数据传给处理所需要的额外开销。

缓存算法

  1. 最优缓存(仅作为度量标准)
  2. 最近未使用算法
  3. 先进先出
  4. 第二次机会
  5. 时钟算法
  6. 最近最少使用算法 LRU
  7. 最不常用算法 LFU

缓存设计问题

  1. 颠簸(Denning)

部分缓存算法实现

github地址

  1. LRU https://github.com/fofcn/operation-system/tree/main/%E5%AE%9E%E8%B7%B5/os/src/main/java/cache/lru
  2. LFU

https://github.com/fofcn/operation-system/tree/main/%E5%AE%9E%E8%B7%B5/os/src/main/java/cache/lfu

目录
相关文章
|
3月前
|
存储 缓存 算法
数据结构和算法学习记录——总结顺序表和链表(双向带头循环链表)的优缺点、CPU高速缓存命中率
数据结构和算法学习记录——总结顺序表和链表(双向带头循环链表)的优缺点、CPU高速缓存命中率
38 0
|
26天前
|
缓存 算法 前端开发
深入理解缓存淘汰策略:LRU和LFU算法的解析与应用
【8月更文挑战第25天】在计算机科学领域,高效管理资源对于提升系统性能至关重要。内存缓存作为一种加速数据读取的有效方法,其管理策略直接影响整体性能。本文重点介绍两种常用的缓存淘汰算法:LRU(最近最少使用)和LFU(最不经常使用)。LRU算法依据数据最近是否被访问来进行淘汰决策;而LFU算法则根据数据的访问频率做出判断。这两种算法各有特点,适用于不同的应用场景。通过深入分析这两种算法的原理、实现方式及适用场景,本文旨在帮助开发者更好地理解缓存管理机制,从而在实际应用中作出更合理的选择,有效提升系统性能和用户体验。
56 1
|
2月前
|
缓存 算法 NoSQL
Java中的分布式缓存与一致性哈希算法
Java中的分布式缓存与一致性哈希算法
|
2月前
|
存储 算法 Java
高并发架构设计三大利器:缓存、限流和降级问题之滑动日志算法问题如何解决
高并发架构设计三大利器:缓存、限流和降级问题之滑动日志算法问题如何解决
|
2月前
|
算法 Java 调度
高并发架构设计三大利器:缓存、限流和降级问题之使用Java代码实现令牌桶算法问题如何解决
高并发架构设计三大利器:缓存、限流和降级问题之使用Java代码实现令牌桶算法问题如何解决
|
2月前
|
缓存 算法 Java
高并发架构设计三大利器:缓存、限流和降级问题之使用代码实现漏桶算法问题如何解决
高并发架构设计三大利器:缓存、限流和降级问题之使用代码实现漏桶算法问题如何解决
|
2月前
|
算法 UED 缓存
高并发架构设计三大利器:缓存、限流和降级问题之滑动窗口算法适用于哪些场景
高并发架构设计三大利器:缓存、限流和降级问题之滑动窗口算法适用于哪些场景
|
2月前
|
存储 算法 缓存
高并发架构设计三大利器:缓存、限流和降级问题之滑动窗口算法的原理是什么
高并发架构设计三大利器:缓存、限流和降级问题之滑动窗口算法的原理是什么
|
2月前
|
算法 API 缓存
高并发架构设计三大利器:缓存、限流和降级问题之固定窗口限流算法的原理是什么
高并发架构设计三大利器:缓存、限流和降级问题之固定窗口限流算法的原理是什么
|
2月前
|
缓存 算法 前端开发
前端 JS 经典:LRU 缓存算法
前端 JS 经典:LRU 缓存算法
33 0