系统结构考点之堆栈型替换算法

本文深入探讨了堆栈型替换算法,重点解析了其特点和判断标准。堆栈型算法如LRU,基于最近使用页面的原则,保持在主存中的页面集合。当主存页数增加时,命中率只会上升或保持不变。文章还对比了不同替换算法,如随机算法、FIFO和OPT,并分析了它们如何解决页面替换问题。LRU和PFF等算法因其特性被归类为堆栈型替换算法,而LFU则是一种按访问频次排序的算法。
摘要由CSDN通过智能技术生成

如题:2021年10月

分析

能理解堆栈,但这个概念几乎是想不起什么了。答案选A,书中有明确的解释。

基本知识

什么是堆栈型替换算法呢?P140有明确的定义

设A是长度为L的任意一个页地址流,t为已处理过t-1个页面的时间点,n为分配给该地址流的主存页数,Bt(n)表示在t时间点、在n页的主存中的页面集合,Lt表示t时间点已遇到过的地址流中相异页的页数。如果堆栈型替换算法满足:
n<Lt时,Bt(n) ⊂ \subset ​Bt(n+1)
n>=Lt时,Bt(n) = Bt(n+1)
公式到底在说些什么呢?
当分配的主存页数 小于 进入页数时,在某个时间点,主存中的页面集合 包含于 n+1页时主存页面集合;此时应该是n则发生了页数置换了,为什么还要出来个n+1页呢?假设多出来个n+1页来,这时主存的页面就不会发生置换了。所以这里主要是比较 多出一页即n+1页时的置换页面集合 是否包含 n页时页面集合。这主要是符合堆栈的入栈特征。从这个主要特点来看:LRU,属于堆栈型,因为此算法保存的是 **最近使用的页数 **,又总被包含于 n+1个最近使用的页面中。这点从lru的名字上就可以轻易判别出来。


下一个就很好理解了,当分配的主存页数 大于等于 进入页数时 ,增不增加分配的页,对于某一时刻的主存页数而言,没什么影响。

如何判断是不是堆栈替换算法:

LRU最近最少使用:肯定是了,前面已经分析了;实质是按访问时间排序,发生淘汰的时候,把访问时间最旧的淘汰掉。
LFU最近不经常使用,书中没有讲到,只是扩展了解下;按频次排序,一个数据被访问过,把它的频次+1,发生淘汰的时候,把频次低的淘汰掉。实质是对应的C选项。
本质:这两种算法,都是保存最近使用的页数,所以都属于堆栈替换算法。
PFF:页面失效频率法,根据各道程序在实际运行过程中页面失效率的情况,由操作系统动态调整分配给每道程序的主存页面数。在多道程序设计中,当一道程序的命中率低于某个限定值时就增加分配给该道程序的主存页面数,以提高它的命中率。而当命中率高于某个限定值时就减少分配给该道程序的主存页面数,把节省出来的主存页面分配给其它程序。从而使整个系统的总的命中率和主存利用率都得到提高。对应的答案D
显然也是,属于堆栈型替换算法的。

堆栈型替换算法特点

命中率随主存页数的增加只可能提高,至少不会下降。

扩展 页面替换算法

替换算法解决的问题

当主存已满,再调入辅存页面时,选择主存中哪个页作为被替换的页。

随机算法RAND

用软的或硬的随机数产生器产生主存的要被替换页的页号。反映不了程序局部性,命中率很低,已不使用。

先进先出算法FIFO

选择最早装入主存的页作为被替换的页。内存保存的是后进来的页面。不一定正确反映出程序的局部性。

最近最少使用lRU

选择近期最少访问的页数作为被替换页。内存保存的是近期访问的页面;比较正确地反映了程序的局部性。实际操作中,把近期最久未访问过的页作为被替换页,将多少转换为有无。

优化替换算法OPT

根据未来实际使用情况将未来的近期里不用的页替换出去,一定会有最的主存命中率。理想中的算法,可作为评价其他算法的标准。

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

guangod

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

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

余额充值