最近最少使用页面置换算法C语言,3.4.6 最近最少使用页面置换算法

本文介绍了LRU(最近最少使用)页面置换算法,该算法基于最近使用频繁的页面可能在未来继续被使用的观察。LRU在理论上有效但实现成本高,因为它需要维护所有页面的链表并频繁更新。文章探讨了两种硬件实现方法:一种是通过64位计数器跟踪页面访问,另一种是使用n×n位矩阵来标识最近使用的页面。这两种方法都在尝试减少更新链表的开销,以更高效地实现LRU策略。
摘要由CSDN通过智能技术生成

3.4.6   最近最少使用页面置换算法

对***算法的一个很好的近似是基于这样的观察:在前面几条指令中频繁使用的页面很可能在后面的几条指令中被使用。反过来说,已经很久没有使用的页面很有可能在未来较长的一段时间内仍然不会被使用。这个思想提示了一个可实现的算法:在缺页中断发生时,置换未使用时间最长的页面。这个策略称为LRU(Least Recently Used,最近最少使用)页面置换算法。

虽然LRU在理论上是可以实现的,但代价很高。为了完全实现LRU,需要在内存中维护一个所有页面的链表,最近最多使用的页面在表头,最近最少使用的页面在表尾。困难的是在每次访问内存时都必须要更新整个链表。在链表中找到一个页面,删除它,然后把它移动到表头是一个非常费时的操作,即使使用硬件实现也一样费时(假设有这样的硬件)。

然而,还是有一些使用特殊硬件实现LRU的方法。我们先考虑一个最简单的方法。这个方法要求硬件有一个64位计数器C,它在每条指令执行完后自动加1,每个页表项必须有一个足够容纳这个计数器值的域。在每次访问内存后,将当前的C值保存到被访问页面的页表项中。一旦发生缺页中断,操作系统就检查所有页表项中计数器的值,找到值最小的一个页面,这个页面就是最近最少使用的页面。

现在让我们看一看第二个硬件实现的LRU算法。在一个有n个页框的机器中,LRU硬件可以维持一个初值为0的n×n位的矩阵。当访问到页框k时,硬件首先把k行的位都设置成1,再把k列的位都设置成0。在任何时刻,二进制数值最小的行就是最近最少使用的,第二小的行是下一个最近最少使用的,以此类推。这个算法的工作过程可以用图3-17所示的实例说明,该实例中有4个页框,页面访问次序为:

0 1 2 3 2 1 0 3 2 3

访问页面0后的状态如图3-17a所示,访问页1后的状态如图3-17b所示,以此类推。

6ac5276d1e271147704585f3880692f8.png

【责任编辑:董书 TEL:(010)68476606】

点赞 0

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

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

余额充值