大数据算法课程笔记8a:page replacement algorithm
来源:互联网 发布:事件驱动模型 php 编辑:程序博客网 时间:2024/05/17 04:58
本节课主要是介绍page replacement algorithm的相关算法,包括offline和online。
1. 问题简介
这个是体系结构里面的经典问题,内存小、硬盘大,内存快、硬盘慢。所以CPU从内存中读取数据,而内存从硬盘中读取数据。那我们希望内存读取硬盘的次数尽量减少,这样可以减少程序的运行时间,而减少次数的算法主要依赖于page replacement algorithm。
所谓page fault,即内存中不存在所需数据而引入的错误,为了解决这个错误就需要从硬盘中读取数据到内存中。所以每个page fault都对应于一次硬盘读取,耗费大量时间。读到的数据需要覆盖内存中的某些现有数据,如何选择被替代的内存中的数据就是page replacement algorithm处理的问题。
(内存和硬盘的关系和cache与内存的关系一样,都是使用类似的思想)
2. Clairvoyant/offline algorithm
算法可以使用未来信息,即可以知道整个请求序列。(这个要求难以在实际中满足)
clairvoyant 算法的最优结果也是所有算法所能满足的最优算法,定义:Given a page arrival sequence
2.1. Furthest in the future
FIF算法是一种clairvoyant 算法,并且满足
算法简介:每次选取最晚被请求的元素进行替换。具体地,设第
例子:
2.2. FIF 最优性的证明
参考资料:
https://blog.henrypoon.com/blog/2014/02/02/proof-of-the-farthest-in-future-optimal-caching-algorithm/
https://cseweb.ucsd.edu/classes/wi12/cse202-a/lecture4-final.pdf
基本思想:大框架是归纳法,结合分类讨论法。
设FIF的replacement schedule为SFF,而对于任意满足请求序列的schedule S,我们需要证明
基于以上的定义以及事实,我们开始证明FIF的最优性。明确目标以及归纳法的假设:
目标:
归纳法的假设:
Base Case: 令
假设存在
我们从
- 若
rk+1 in cache,则Sk 和SFF 均不会进行任何操作(SFF基于FIF算法,Sk 基于reduced),所以Sk+1=Sk - 若
rk+1 misses, andSk andSFF evict the same element, 则有Sk 在rk+1 处的决策和SFF 一致,所以Sk+1=Sk 。 - 若
rk+1 misses, andSk andSFF evict different elements, supposeSk evictsci andSFF evictscj . 即两者分别替换的不同元素,从而有两个元素ci,cj 参与讨论,而对于两个元素分别有request以及evict两种可能操作。我们对rk+1 之后Sk 首次涉及ci,cj 的操作进行分情况讨论:- Next there is a request
rd tock , andSk evictscj , 即Sk 需要替换cj 了。调换两者的删除位置,使得Sk+1 在第rk+1 处与SFF 一样删除cj ,而在rd 处删除ck ,同样满足请求序列,并且#fetches(Sk+1)=#fetches(Sk)≥#fetches(SFF) 。 - Next, there is a request
rd toci , andSk evictscj . 即Sk 删除ci 之后,在请求序列里又遇到了ci ,而且这次删除了cj 。我们使得Sk+1 在rk+1 处删除cj ,而在rd 处即不需要进行任何操作,同样满足请求序列,并且#fetches(Sk+1)=#fetches(Sk)−1>#fetches(SFF) - Next, there is a request
rd toci andSk evictsc′ . 即Sk 删除ci 之后,在请求序列里又遇到了ci ,这次删除了一个非cj 的元素。注意到此次构造Sk+1 需要满足cj 不被删除、所以我们同样使得Sk+1 在第rk+1 处与SFF 一样删除cj ,而在rd 处与Sk 一样删除c′ ,而插入cj 。这样构造的Sk+1 不是reduced,需要基于上诉Fact转化为reduced scheduleS∗k+1 ,并且满足S∗k+1 makes the same decisions asSFF for requests fromr1 tork+1 , and#fetches(S∗k+1)≤#fetches(Sk+1)=#fetches(Sk)≤#fetches(S) . - Next, there is a request to
cj , which is not possible, sincefj>fi .
- Next there is a request
综上,基于归纳原则,我们证明了
基于上诉结论,我们最终证明了FIF的最优性。
3. Non-Clairvayant/Online algorithm
在线算法只能基于过去的信息进行决策。例如经典算法中常会使用出现的时间、出现的频率、最近出现的密度等等,各种算法在平均page fault number以及使用空间、时间之间做平衡,基于不同的请求序列分布以及权衡可以得到不同的算法。
这里主要介绍一种最简单的在线算法,然后对其进行分析。进而讨论所有在线算法的下界。
3.1. 评价函数 Metric
任意算法
使用
3.2. least recently used algorithm (LRU)
算法简介:如名字所述,每次选择最不近使用的元素进行替换。具体地,设第
例子:
性能分析:
首先将请求序列分为
那么LRU对于每个区块最多遇到
所以LRU的competitive ratio
3.3. 所有确定性online page replacement algorithm的competitive ratio下界
Claim:对于所有determinisitic online page replacement algorithm
证明方法很简单,构造一个只包含
- 大数据算法课程笔记8a:page replacement algorithm
- 大数据课程笔记4:摘要结构,streaming algorithm
- 大数据算法课程笔记5a: fixed-parameter vertex cover
- C语言两个简单的存储器管理的页面置换算法(FIFO and LRU) Page-Replacement Algorithm
- 大数据算法课程笔记2:2D Convex Hull
- page replacement
- Page Replacement
- 大数据算法导论课程大纲
- 大数据课程学习笔记(1)
- 大数据课程笔记3:Kolmogorov Complexity
- Multi-Queue Replacement Algorithm
- nefu 625 Page Replacement
- A. Replacement
- 大数据算法课程笔记1:寻找中值算法之随机选取,中值的中值,One Pass算法
- 数据挖掘十大经典算法(4) The Apriori algorithm
- 数据挖掘十大经典算法(4) The Apriori algorithm
- 数据挖掘十大经典算法(4) The Apriori algorithm
- 数据挖掘十大经典算法(4) The Apriori algorithm .
- A. Borya's Diagnosis
- 解决npm 的 shasum check failed for错误
- Android弹出式窗口PopuWindow的使用
- Java基础--3常量
- leetcode add two numbers
- 大数据算法课程笔记8a:page replacement algorithm
- MSP430单片机的ADC详解
- 菜鸟之路spring cloud 学习|第二篇 服务消费者
- 纯CSS3文章卡片UI设计效果
- set() get()
- java 的静态导入(import static)
- hadoop-2.8.2编译64位教程 CentOS7 jdk1.8
- uva1151 最小生成树kruskal
- 序列化