关于缓存调度算法FIFO、LRU、OPT这三种置换算法的缺页次数
2013-09-25 21:40
435 查看
这三个置换算法,或者说缓存调度算法,其实来源于操作系统。操作系统的页置换算法。
FIFO:即 First In, First Out 先进先出算法。
LRU: Least recently used,最近最少使用算法。即是将最近最少使用的对象踢出内存。
OPT: Optimal,最优替换,也就是上帝模式。它是考虑当前内存中的对象,以及将来要放进内存的对象,然后,将在最远的将来才被访问的页面踢出内存。所以,这个算法在转换时,需要把将来即将放进内存的对象考虑进去,才能找到要踢出内存的对象。
看下面的详细例子,了解算法的具体策略。
考虑下述页面走向:
1,2,3,4,2,1,5,6,2,1,2,3,7,6,3,2,1,2,3,6
当内存块数量分别为3时,试问FIFO、LRU、OPT这三种置换算法的缺页次数各是多少?
答:缺页定义为所有内存块最初都是空的,所以第一次用到的页面都产生一次缺页。
当内存块数量为3时:
发生缺页中断的次数为16。
在FIFO算法中,先进入内存的页面被先换出。当页6要调入时,内存的状态为4、1、5,考查页6之前调入的页面,分别为5、1、2、4,可见4为最先进入内存的,本次应换出,然后把页6调入内存。
发生缺页中断的次数为15。
在LRU算法中,最近最少使用的页面被先换出。当页6要调入时,内存的状态为5、2、1,考查页6之前调入的页面,分别为5、1、2,可见2为最近一段时间内使用最少的,本次应换出,然后把页6调入内存。
发生缺页中断的次数为11。
在OPT算法中,在最远的将来才被访问的页面被先换出。当页6要调入时,内存的状态为1、2、5,考查页6后面要调入的页面,分别为2、1、2、…,可见5为最近一段时间内使用最少的,本次应换出,然后把页6调入内存。
via: http://yinzhezq.blog.163.com/blog/static/1648628902010112961039187/
另外:
还有算法:
LFU: Least Frequently Used,最不经常使用算法。它是根据在一段时间里页面被使用的次数选择出最少使用的页。注意它与LRU的区别。
另外,OPT算法通常是用来评价其他替换算法的好坏的标准。本身无法实现。
via: http://wenda.tianya.cn/question/7885ae7b7cc29697
一些参考资料:
在Java中, 基于LinkedHashMap实现LRU缓存调度算法原理及应用 。搜下,有一堆文章:
如:/article/5193964.html
基于LRU改进的算法也有很多:如:
/article/5794188.html
缓存的命中率
另一方面,当你自己去着手写一个缓存算法,或者去使用一个的时候,或者去评价比较的时候,
我们要关注的就是缓存的命中率问题。
如果你自己写一个的话,那么最好是模拟一些数据,测试一下大概的命中率能有多大,再与其他算法的命中率进行比较。
转载:http://chen.junchang.blog.163.com/blog/static/6344519201372724744551/?COLLCC=4294895973&
FIFO:即 First In, First Out 先进先出算法。
LRU: Least recently used,最近最少使用算法。即是将最近最少使用的对象踢出内存。
OPT: Optimal,最优替换,也就是上帝模式。它是考虑当前内存中的对象,以及将来要放进内存的对象,然后,将在最远的将来才被访问的页面踢出内存。所以,这个算法在转换时,需要把将来即将放进内存的对象考虑进去,才能找到要踢出内存的对象。
看下面的详细例子,了解算法的具体策略。
考虑下述页面走向:
1,2,3,4,2,1,5,6,2,1,2,3,7,6,3,2,1,2,3,6
当内存块数量分别为3时,试问FIFO、LRU、OPT这三种置换算法的缺页次数各是多少?
答:缺页定义为所有内存块最初都是空的,所以第一次用到的页面都产生一次缺页。
当内存块数量为3时:
发生缺页中断的次数为16。
在FIFO算法中,先进入内存的页面被先换出。当页6要调入时,内存的状态为4、1、5,考查页6之前调入的页面,分别为5、1、2、4,可见4为最先进入内存的,本次应换出,然后把页6调入内存。
发生缺页中断的次数为15。
在LRU算法中,最近最少使用的页面被先换出。当页6要调入时,内存的状态为5、2、1,考查页6之前调入的页面,分别为5、1、2,可见2为最近一段时间内使用最少的,本次应换出,然后把页6调入内存。
发生缺页中断的次数为11。
在OPT算法中,在最远的将来才被访问的页面被先换出。当页6要调入时,内存的状态为1、2、5,考查页6后面要调入的页面,分别为2、1、2、…,可见5为最近一段时间内使用最少的,本次应换出,然后把页6调入内存。
via: http://yinzhezq.blog.163.com/blog/static/1648628902010112961039187/
另外:
还有算法:
LFU: Least Frequently Used,最不经常使用算法。它是根据在一段时间里页面被使用的次数选择出最少使用的页。注意它与LRU的区别。
另外,OPT算法通常是用来评价其他替换算法的好坏的标准。本身无法实现。
via: http://wenda.tianya.cn/question/7885ae7b7cc29697
一些参考资料:
在Java中, 基于LinkedHashMap实现LRU缓存调度算法原理及应用 。搜下,有一堆文章:
如:/article/5193964.html
基于LRU改进的算法也有很多:如:
/article/5794188.html
缓存的命中率
另一方面,当你自己去着手写一个缓存算法,或者去使用一个的时候,或者去评价比较的时候,
我们要关注的就是缓存的命中率问题。
如果你自己写一个的话,那么最好是模拟一些数据,测试一下大概的命中率能有多大,再与其他算法的命中率进行比较。
转载:http://chen.junchang.blog.163.com/blog/static/6344519201372724744551/?COLLCC=4294895973&
相关文章推荐
- FIFO、LRU、OPT这三种置换算法的缺页次数
- FIFO、LRU、OPT这三种置换算法的缺页次数
- FIFO、LRU、OPT这三种置换算法的缺页次数
- FIFO、LRU、OPT这三种置换算法的缺页次数
- FIFO、LRU、OPT这三种置换算法的缺页次数
- FIFO、LRU、OPT这三种置换算法的缺页次数
- FIFO、LRU、OPT这三种置换算法的缺页次数
- FIFO、LRU、OPT这三种置换算法的缺页次数
- FIFO、LRU、OPT这三种置换算法的缺页次数
- FIFO、LRU、OPT这三种置换算法的缺页次数
- FIFO、LRU、OPT这三种置换算法的缺页次数
- 【笔试-基础】FIFO、LRU、OPT这三种置换算法的缺页次数
- FIFO、LRU、OPT这三种置换算法的缺页次数
- 缺页中断——FIFO、LRU、OPT这三种置换算法
- 缺页中断——FIFO、LRU、OPT这三种置换算法
- 深入理解【缺页中断】及FIFO、LRU、OPT这三种置换算法
- 缺页中断——FIFO、LRU、OPT这三种置换算法
- FIFO,LRU,OPT算法及缺页次数计算
- 缺页中断——FIFO、LRU、OPT这三种置换算法
- 缓存失效策略(FIFO 、LRU、LFU三种算法的区别)