文章目录
磁盘高速缓存
高速缓存
-
比内存小,比内存快的存储器,用在处理器和内存之间
-
基于局部性原理,减少了对内存的平均访问时间
-
注意:
磁盘高速缓存
(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的磁盘高速缓存性能