页面置换算法(按照步骤来讲的,超级详细)

本文介绍了三种页面置换算法:最佳置换算法(OPT),先进先出算法(FIFO)和最近最久未使用算法(LRU)。OPT虽然能提供最低缺页率但无法实现,FIFO实现简单但性能不佳,而LRU考虑时间局部性,实际应用广泛。通过实例分析了各算法的工作原理和优缺点,展示了它们在不同场景下的表现。

摘要生成于 C知道 ,由 DeepSeek-R1 满血版支持, 前往体验 >

1 最佳置换算法(OPT,Optimal)

1.1定义

每次选择淘汰的页面将是以后永不使用,或者在最长时间内不再被访问的页面,这样可以保证最低的缺页率。

1.2例题

例:假设系统为某进程分配了三个内存块,并考虑到有一下页面号引用串(会依次访问这些页面)
7, 0, 1, 2, 0, 3, 0, 4, 2, 3, 0, 3, 2, 1, 2, 0, 1, 7, 0, 1

  • 前三步:因为有三个内存块,所以会依次访问7,0,1页面。但是由于7,0,1这三个页面都是之前未被访问(缺页)的,所以发生了页面中断。
    在这里插入图片描述

  • 第四步:由于2页面之前没有被访问过,并且目前已经没有空闲的页面了,于是需要选择从 0,1,7 中淘汰一 页。采用最佳置换算法(OPT)规则,往后寻找,最后一个出现 的页号就是要淘汰的页面。
    在这里插入图片描述

  • 第五步:由于0号页面已经存在于访问的页面中,所以无需再访问。
    在这里插入图片描述
    。。。。。。。。。。

  • 第六步:与第四步类似
    在这里插入图片描述

  • 结果
    整个过程缺页中断发生了9次,页面置换发生了6次。
    注意:缺页时未必发生页面置换。若还有可用的空闲内存块,就不用进行页面置换。
    缺页率 = 9/20 = 45%

1.3特点

  • 缺点:最佳置换算法是一种理想化算法,具有较好的性能,但是实际上无法实现(无法预知一个进程中的若干页面哪一个最长时间不被访问);
  • 优点:最佳置换算法可以保证获得最低的缺页率

2 先进先出置换算法(FIFO)

2.1定义

每次选择淘汰的页面是最早进入内存的页面

  • 实现方法:把调入内存的页面根据调入的先后顺序排成一个队列,需要换出页面时选择队头页面即可。 队列的最大长度取决于系统为进程分配了多少个内存块。

2.2 例题

例1:假设系统为某进程分配了三个内存块,并考虑到有以下页面号引用串:
3, 2, 1, 0, 3, 2, 4, 3, 2, 1, 0, 4
在这里插入图片描述

例2:假设系统为某进程分配了四个内存块,并考虑到有以下页面号引用串:
3, 2, 1, 0, 3, 2, 4, 3, 2, 1, 0, 4
在这里插入图片描述

分配四个内存块时, 缺页次数:10次;分配三个内存块时,缺页次数:9次

Belady 异常——当为进程分配的物理块数增大时,缺页次数不减反增的异常现象。

2.3特点

  • 优点:先进先出算法实现简单,是最直观的一个算法
  • 缺点:先进先出的性能最差,因为与通常页面的使用规则不符合,所以实际应用少

3 最近最久未使用置换算法(LRU,least recently used)

3.1定义

每次淘汰的页面是最近最久未使用的页面

实现方法:赋予每个页面对应的页表项中,用访问字段记录该页面自上次被访问以来所经历的时间t。当需要淘汰一个页面时,选择现有页面中t值最大的,即最近最久未使用的页面。

3.2 例题

例:假设系统为某进程分配了四个内存块,并考虑到有以下页面号引用串:
1, 8, 1, 7, 8, 2, 7, 2, 1, 8, 3, 8, 2, 1, 3, 1, 7, 1, 3, 7

在手动做题时,若需要淘汰页面,可以逆向检查此时在内存中的几个页面号。在逆向扫描过程最后一个出现的页号就是要淘汰的页面。
在这里插入图片描述

3.3 特点

  • 优点:由于考虑程序访问的时间局部性,一般能有较好的性能;实际应用多
  • 缺点:实现需要较多的硬件支持,会增加硬件成本

如果还是不能理解的同学,建议可以看看王道的视频页面置换算法

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值