【操作系统】磁盘高速缓存

本文探讨了磁盘高速缓存的作用,介绍了LRU和LFU两种常用算法,以及它们的逻辑实现和可能的问题。文章指出LRU倾向于最近最少使用,而LFU关注最不常使用。同时,讨论了两种算法的性能优劣及可能的改进措施。

摘要生成于 C知道 ,由 DeepSeek-R1 满血版支持, 前往体验 >

磁盘高速缓存

高速缓存

  • 比内存小,比内存快的存储器,用在处理器和内存之间

  • 基于局部性原理,减少了对内存的平均访问时间

  • 注意:

    在这里插入图片描述

磁盘高速缓存

(Disk cache)

  • 磁盘扇区而设置位于内存的缓冲区
    • 只是为磁盘扇区而设置,并不是代表缓存在磁盘中
  • 包含了磁盘某些扇区的副本

在这里插入图片描述

磁盘高速缓存相关算法

  • 前面学的内存中置换算法是针对内存中进程的驻留集

  • 而这里的是针对磁盘在内存中开辟的磁盘高速缓冲区满了之后的置换

  • 因此将前面所学的完善: 进程驻留集中没有访问的页面,缺页时,先看高速磁盘缓冲区中有没有目标页,而不止像之前那样到磁盘中找目标页。

一、LRU算法(Least Recently Used)

最近最少使用

1. 介绍
  • 置换策略最常用的算法
  • 位于磁盘高速缓存中最近最少使用的块被换出
2. 逻辑实现
  • 用指向磁盘高速缓存的指针栈来组织块
    • 最近被访问过的块被放在栈顶(用栈顶指针指向)
      • 当一个块被引用或从磁盘放入磁盘高速缓存时,将它放在栈顶(用栈顶指针指向)
    • 位于栈底的块即是置换对象(用栈底指针指向)

二、LFU (Least Frequently Used)

最不常使用置换算法

1.介绍
  • 置换访问次数最少的块
  • 为每个块关联一个计数器
    • 每次访问时,对应块的计数器增加1
    • 当需要置换时,选择计数器值最小的块置换
2. 问题
  • 如果一个块短期内被频繁访问,计数器值迅速增加,之后即使长时间不访问,也不会被选作置换对象

  • 解决办法:将磁盘高速缓存分区

在这里插入图片描述

  • 越是往后的块,越是最近没有访问的
  • 在老区中选计数值最小的

但存在问题:

例如A(1),B(5),而B很久没访问了,A最近访问过,但也慢慢进入了老区。此时会选A,但明显选B才合适。

于是,再加一个区,用于缓和过度

在这里插入图片描述

三、算法性能

  • 使用LRU的磁盘高速缓存性能

    在这里插入图片描述

  • 使用LFU的磁盘高速缓存性能

    在这里插入图片描述

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值