本节课主要是介绍page replacement algorithm的相关算法,包括offline和online。
这个是体系结构里面的经典问题,内存小、硬盘大,内存快、硬盘慢。所以CPU从内存中读取数据,而内存从硬盘中读取数据。那我们希望内存读取硬盘的次数尽量减少,这样可以减少程序的运行时间,而减少次数的算法主要依赖于page replacement algorithm。
所谓page fault,即内存中不存在所需数据而引入的错误,为了解决这个错误就需要从硬盘中读取数据到内存中。所以每个page fault都对应于一次硬盘读取,耗费大量时间。读到的数据需要覆盖内存中的某些现有数据,如何选择被替代的内存中的数据就是page replacement algorithm处理的问题。
(内存和硬盘的关系和cache与内存的关系一样,都是使用类似的思想)
算法可以使用未来信息,即可以知道整个请求序列。(这个要求难以在实际中满足)
clairvoyant 算法的最优结果也是所有算法所能满足的最优算法,定义:Given a page arrival sequence z ,
FIF算法是一种clairvoyant 算法,并且满足
算法简介:每次选取最晚被请求的元素进行替换。具体地,设第 i 次请求
例子:
request| | cache elements| | page fault| | evicted item| |
---|---|---|---|
a | -,-,- | True | - |
b | a,-,- | True | - |
c | a,b,- | True | - |
d | a,b,c | True | c |
a | a,b,d | False | |
e | a,b,d | True | d |
b | a,b,e | False | |
a | a,b,e | False | |
c | a,b,e | True | a |
e | c,b,e | False | |
d | c,b,e | True | c |
b | d,b,e | False |
参考资料:
/
基本思想:大框架是归纳法,结合分类讨论法。
设FIF的replacement schedule为SFF,而对于任意满足请求序列的schedule S,我们需要证明 #fetches(SFF)≤#fetches(S) 。所谓schedule,记录了算法的所有操作,例如insert a、evict b,通常一个page fault对应于一对insert和evict。 schedule 的一个子集是reduced schedule,即lazy schedule,只有当request某元素的时候才会insert该元素。一个事实是:对于任意schedule S , 永远存在一个reduced schedule
基于以上的定义以及事实,我们开始证明FIF的最优性。明确目标以及归纳法的假设:
目标: ∀S,#fetches(SFF)≤#fetches(S) ,即对于所有可以满足request的reduced schedule S ,均满足硬盘读取数不小于
归纳法的假设: ∃Sj , such that Sj makes the same decisions as SFF for requests from r1 to rj , and #fetches(Sj)≤#fetches(S) .
Base Case: 令 S0=S , 则有 #fetches(S0)≤#fetches(S) ,并且 S0=SFF for requests from r1 to r0 (NULL)
假设存在 Sk 满足 Sk makes the same decisions as SFF for requests from r1 to rk , and #fetches(Sk)≤#fetches(S) .
我们从 Sk 构造 Sk+1 ,使得 Sk+1 makes the same decisions as SFF for requests from r1 to rk+1 , and #fetches(Sk+1)≤#fetches(S) . 方法如下:
综上,基于归纳原则,我们证明了 ∃Sn , such that Sn makes the same decisions as SFF for requests from r1 to rn , 从而 Sn=SFF 而且 #fetches(SFF)=#fetches(Sn)≤#fetches(S) .
基于上诉结论,我们最终证明了FIF的最优性。
在线算法只能基于过去的信息进行决策。例如经典算法中常会使用出现的时间、出现的频率、最近出现的密度等等,各种算法在平均page fault number以及使用空间、时间之间做平衡,基于不同的请求序列分布以及权衡可以得到不同的算法。
这里主要介绍一种最简单的在线算法,然后对其进行分析。进而讨论所有在线算法的下界。
任意算法 A 对于给定的请求序列
使用 Cost(A,z)OPT(z) 评价算法 A 在给定
算法简介:如名字所述,每次选择最不近使用的元素进行替换。具体地,设第 i 次请求
例子:
request| | cache elements| | page fault| | evicted item| |
---|---|---|---|
a | -,-,- | True | - |
b | a,-,- | True | - |
c | a,b,- | True | - |
d | a,b,c | True | a |
a | d,b,c | True | b |
e | d,a,c | True | c |
b | d,a,e | True | d |
a | b,a,e | False | |
c | b,a,e | True | e |
e | b,a,c | True | b |
d | e,a,c | True | a |
b | e,d,c | True | c |
性能分析:
首先将请求序列分为 b 个区块,每个区块内最多有
那么LRU对于每个区块最多遇到
所以LRU的competitive ratio ≤k ,其中 k 为cache size。
Claim:对于所有determinisitic online page replacement algorithm
证明方法很简单,构造一个只包含 k+1 个元素的请求序列,每次都使得 z 请求cache中不存在的元素(可以实现,因为算法只基于过去信息,而且是确定性的),那么
本文发布于:2024-01-28 10:11:26,感谢您对本站的认可!
本文链接:https://www.4u4v.net/it/17064078916687.html
版权声明:本站内容均来自互联网,仅供演示用,请勿用于商业和其他非法用途。如果侵犯了您的权益请与我们联系,我们将在24小时内删除。
留言与评论(共有 0 条评论) |