一文讲懂页面置换算法,带例题详解

article/2025/10/8 8:38:02

目录

​什么是页面置换算法?

​缺页中断次数和页面置换次数

​啥子是缺页?

​啥子是中断?

​啥子是缺页中断?

​缺页中断次数

​最佳置换算法OPT和先进先出置换算法FIFO

​最佳置换算法OPT

​算法思想

​算法优点

​算法缺点 

​例题

​先进先出页面置换算法FIFO

​思想 

​优点 

​缺点 

​例题 

​LRU置换算法

​思想

​优点

​缺点

​例题

​Clock置换算法

​简单的Clock置换算法

​思想

​改进型Clock置换算法

​思想


什么是页面置换算法?

在进程运行的过程当中,进程所要访问的页面不再内存中,我们就需要把这个不存在的页面调入内存,但内存已经没有空闲空间了,这时候就要求系统从内存中调出一个页面,将其移入磁盘的对换区中。将哪个页面调出来,就要通过算法来确定。我们把选择换出页面的算法就叫做页面置换算法。

一个好的页面置换算法应具有较低的页面置换概率。

页面置换算法的理论目标:

  1. 将那些以后不再会访问的页面换出
  2. 把那些在较长时间内不会被访问的页面换出

缺页中断次数和页面置换次数

啥子是缺页?

缺页就是要访问的页面并不在物理内存中。

啥子是中断?

中断是指计算机在执行程序的过程中,当出现异常情况或特殊请求时,计算机停止现行程序的运行,转向对这些异常情况或特殊请求的处理,处理结束后再返回现行程序的间断处,继续执行原程序。

啥子是缺页中断?

缺页中断访问的页面已经映射到了虚拟存储空间中,但是物理内存已满,这时候CPU的内存存储单元就会发出中断。

缺页中断次数

缺页中断次数=进程的物理块数+页面置换次数

最佳置换算法OPT和先进先出置换算法FIFO

最佳置换算法是一种理论上的算法,目前该算法还无法实现,但我们可以用最佳置换算法OPT去评价其他算法。

最佳置换算法OPT

算法思想

选择的被淘汰页面是以后用不使用的,或者是在未来最长一段时间内不再被访问的页面。

算法优点

能够获得最低的缺页率

算法缺点 

现在的技术无法保证某个页面能够在未来的最长时间内不被访问,所以这个算法只是理论上的,无法实践。

例题

假定系统给某进程分配了三个物理块,页面号引用串为"7,0,1,2,0,3,0,4,2,3,0,3,2,1,2,0,1,7,0,1"

最佳页面置换算法举例
步骤1234567891011121314151617181920
页面号70120304230321201701
物理块177722222222222222777
物理块20000004440000000000
物理块3111333333331111111

步骤1:装入页面号为7的页面

步骤2:装入页面号为0的页面

步骤3:装入页面号为1的页面

步骤4:装入页面号为2的页面,内存不够,需要置换页面,页面号7在步骤18是用到。页面号0在步骤5用到,页面1在步骤14用到,根据最佳置换算法,选择未来时间内最久不会被用到的页面,所以把页面号为7的页面调出,置换成页面号为2的页面,其余物理块内的页面不变

步骤5:要装入页面号为0的页面,内存中存在页面号为0的页面,所以无需处理

步骤6:页面号2出现在步骤9,页面号0出现在步骤7,页面1出现在步骤14,所以调出页面1,置换从页面号3

步骤7:调入的页面0存在在内存中,无需处理

步骤8:装入页面4,内存满,需要置换,页面2在步骤9,页面3在步骤10,页面0在步骤11,所以调出页面0,置换成页面4

步骤9:页面2在内存中,不置换

步骤10:页面3在内存中,不置换

步骤11:装入页面0,不再内存,需要置换;页面2出现在步骤13,页面4在后面不会出现,页面3出现在步骤12,所以调出页面4,置换为页面0

步骤12:存在,不置换

步骤13:存在,不置换

步骤14:页面2出现在步骤15,页面0出现在步骤16,页面3不出现,调出页面3,置换成页面1

步骤15:存在,不置换

步骤16:存在,不置换

步骤17:存在,不置换

步骤18:页面2不出现,页面1出现在步骤20,页面0出现在步骤19,调出页面2,置换成页面7

步骤19:存在,不置换

步骤20:存在,不置换

页面置换次数:6次;分别是步骤4、6、8、11、14、18

缺页次数:9;分别是步骤1、2、3(插入新页面3次)+页面置换6次

先进先出页面置换算法FIFO

思想 

先进先出算法总是淘汰最先进入内存的页面,就是淘汰掉在内存中驻留时间最久的页面。

出发点是近期调入的页面被再次访问的概率要大于早期调入页面的概率实现简单

优点 

实现较为简单

缺点 

性能较差:先进先出算法所依据的条件是各个页面调入内存的时间,但是页面调入的先后顺序并不能保证页面使用频率和时间长短。

算法与实际进程的运行规律并不适应

例题 

假定系统给某进程分配了三个物理块,页面号引用串为"7,0,1,2,0,3,0,4,2,3,0,3,2,1,2,0,1,7,0,1"

最佳页面置换算法举例
步骤1234567891011121314151617181920
页面号70120304230321201701
物理块177722224440000000777
物理块20000333222221111100
物理块3111100033333222221

替换指针指向当前存在时间最长的页面

步骤1:装入页面号为7的页面,替换指针指向页面7

步骤2:装入页面号为0的页面,替换指针指向页面7

步骤3:装入页面号为1的页面,替换指针指向页面7

步骤4:装入页面号为2的页面,内存不够,需要置换页面,页面7、0、1中最早进入内存的页面是页面7,调出页面7,装入页面2,即页面7被页面2置换,替换指针指向页面0

步骤5:要装入页面号为0的页面,内存中存在页面0,无动作,替换指针指向页面0

步骤6:要装入页面号为3的页面,内存不够,需要置换页面,页面2、0、1中最早进入内存的页面是页面0,调出页面0,装入页面3,即页面0被页面3置换,替换指针指向页面1

步骤7:要装入页面号为0的页面,内存不够,需要置换页面,页面2、3、1中最早进入内存的页面是页面1,调出页面1,装入页面0,即页面1被页面0置换,替换指针指向页面2

步骤8:要装入页面号为4的页面,内存不够,需要置换页面,页面2、3、0中最早进入内存的页面是页面2,调出页面2,装入页面4,即页面2被页面4置换,替换指针指向页面3

步骤9:要装入页面号为2的页面,内存不够,需要置换页面,页面4、3、0中最早进入内存的页面是页面3,调出页面3,装入页面2,即页面3被页面2置换,替换指针指向页面0

步骤10:要装入页面号为3的页面,内存不够,需要置换页面,页面4、2、0中最早进入内存的页面是页面0,调出页面0,装入页面3,即页面0被页面3置换,替换指针指向页面4

步骤11:要装入页面号为0的页面,内存不够,需要置换页面,页面4、2、3中最早进入内存的页面是页面4,调出页面4,装入页面0,即页面4被页面0置换,替换指针指向页面2

步骤12:要装入页面号为3的页面,内存中存在页面3,无动作,替换指针指向页面2

步骤13:要装入页面号为2的页面,内存中存在页面2,无动作,替换指针指向页面2

步骤14:要装入页面号为1的页面,内存不够,需要置换页面,页面0、2、3中最早进入内存的页面是页面2,调出页面2,装入页面1,即页面2被页面1置换,替换指针指向页面3

步骤15:要装入页面号为2的页面,内存不够,需要置换页面,页面0、1、3中最早进入内存的页面是页面3,调出页面3,装入页面2,即页面3被页面2置换,替换指针指向页面0

步骤16:要装入页面号为0的页面,内存中存在页面0,无动作,替换指针指向页面0

步骤17:要装入页面号为1的页面,内存中存在页面1,无动作,替换指针指向页面0

步骤18:要装入页面号为7的页面,内存不够,需要置换页面,页面0、1、2中最早进入内存的页面是页面0,调出页面0,装入页面7,即页面0被页面7置换,替换指针指向页面1

步骤19:要装入页面号为0的页面,内存不够,需要置换页面,页面7、1、2中最早进入内存的页面是页面1,调出页面1,装入页面0,即页面1被页面0置换,替换指针指向页面2

步骤20:要装入页面号为1的页面,内存不够,需要置换页面,页面7、0、2中最早进入内存的页面是页面2,调出页面2,装入页面1,即页面2被页面1置换,替换指针指向页面7

页面置换次数:12次;分别是步骤4、6、7、8、9、10、11、14、15、18、19、20

缺页次数:15;分别是步骤1、2、3(插入新页面3次)+页面置换12次

FIFO算法,找替换指针(淘汰页面)的小窍门:看哪个页面连续出现的次数最长,连续出现次数最长的页面就是在内存中存在最久的页面,即淘汰页面。

LRU置换算法

思想

LRU算法 least recently used

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

思想:每次选择内存中离当前时刻最久未使用过的页面淘汰

依据的原理是局部性原理

优点

不会出现belady现象

性能较好,接近OPT算法

缺点

1. 算法效率不高:

需要对整个页表频繁的维护

LRU算法会经常用到比较,当页面数较多是,会消耗大量时间在比较上

2. 实现要依托较多的硬件支持,实现所需成本较高

例题

页面走向“4、3、2、1、4、3、5、4、3、2、1、5”,主存容量=3,采用LRU算法进行页面淘汰

步骤123456789101112
页面432143543215
栈顶物理块12143543215
物理块233214354321
栈底物理块3444321435432

步骤1:装入页面4

步骤2:装入页面3

步骤3:装入页面2

步骤4:装入页面1,内存容量不足,依据LRU算法,内存中有三个页面2、3、4;当前最久未使用的页面是页面4,所以将页面4置换成页面1;最久未使用页面变为页面3

步骤5:装入页面4,内存容量不足,依据LRU算法,内存中有三个页面1、2、3;最久未使用的页面是页面3,所以将页面3置换成页面4;最久未使用页面变为页面2

步骤6:装入页面3,内存容量不足,依据LRU算法,内存中有三个页面4、1、2;最久未使用的页面是页面2,所以将页面2置换成页面3;最久未使用页面变为页面1

步骤7:装入页面5,内存容量不足,依据LRU算法,内存中有三个页面3、4、1;最久未使用的页面是页面1,所以将页面1置换成页面5;最久未使用页面变成页面4

步骤8:装入页面4,内存中存在页面4,当前最久未使用的页面是页面4,装入页面4后,最久未使用页面变成页面3

步骤9:装入页面3,内存中存在页面3,当前最久未使用的页面是页面3,装入页面3后,最久未使用页面变成页面5

步骤10:装入页面2,内存容量不足,依据LRU算法,内存中有三个页面3、4、5;最久未使用的页面是页面5,所以将页面5置换成页面2;最久未使用页面变成页面4

步骤11:装入页面1,内存容量不足,依据LRU算法,内存中有三个页面2、3、4;最久未使用的页面是页面4,所以将页面4置换成页面1;最久未使用页面变成页面3

步骤12:装入页面5,内存容量不足,依据LRU算法,内存中有三个页面1、2、3;最久未使用的页面是页面3,所以将页面3置换成页面5;最久未使用页面变成页面2

做题经验:页面斜着看是连续的,可以做题的时候依据该规律检查正确与否

Clock置换算法

简单的Clock置换算法

思想

当页面被访问时,页面的访问位置1;

置换算法在选择页面淘汰时,首先会检查页面的访问位,若访问位为0直接换出,若访问位为1,则给该页的访问位重新置1,再给该页面一次存在的机会;

之后按照FIFO页面置换算法去检查下个页面,是否需要淘汰

如果检查到最后一个页面,最后一个页面的访问位是1,则将该页面访问位置0,再返回到队首检查第一个页面,以此往复。

改进型Clock置换算法

思想

改进型时钟算法就是在简单的时钟算法基础上加上了置换代价

除了访问位还多了一个修改位

有访问位A和修改位M可以组成四周类型的页面

1类:(A=0,M=0)表示该页面最近未被访问也没有被修改,是最佳淘汰页

2类:(A=0,M=1)表示该页面最近未被访问,但是被修改过了,并不是很好的淘汰页

3类:(A=1,M=0)表示该页面最近被访问过,但是没被修改过,该页面有可能再被访问

4类:(A=1,M=1)表示该页面最近被访问过且被修改过,该页面很有可能被再次访问


http://chatgpt.dhexx.cn/article/on2HJcPW.shtml

相关文章

回声状态网络ESN(原理)

回声状态网络ESN(原理) 结构特点 网络有3层:输入层 - 隐含层 - 输出层

基于回声状态网络(ESN)的时间序列预测

基于回声状态网络(ESN)的时间序列预测 matlab代码 ID:69100644585791395

【回声状态网络ESN预测】基于粒子群优化回声状态网络ESN实现数据预测附matlab代码

1 简介 由于结构简单,收敛速度快等优点,回声状态网络(Echo State Network, ESN)已被广泛的用于时间序列的预测.针对回声状态网络中随机生成权值矩阵带来的不适用于特定时间序列的问题,本文提出利用粒子群优化算法来优化回声状态网络部分随机权值..实验结果表明,本文提出的方法…

第二十九课.回声状态网络ESN

目录 Echo State NetworkESN的训练与预测关于ESN工作原理的理解 基于Numpy的ESN Echo State Network ESN的训练与预测 回声状态网络(Echo State Network)又称为库计算,即Reservoir Computing,被视为是一种神经网络的扩展。 Res…

【无人机】回波状态网络(ESN)在固定翼无人机非线性控制中的应用(Matlab代码实现)

💥💥💞💞欢迎来到本博客❤️❤️💥💥 🏆博主优势:🌞🌞🌞博客内容尽量做到思维缜密,逻辑清晰,为了方便读者。 ⛳️座右铭&a…

【MLPs+ESN】利用多层感知机MLPs对经典ESN(回声状态网络)的输出权值计算进行优化的MATLAB仿真

单独的ESN仿真: ESN的运行结果如下所示: 这个部分的误差为: 0.0435 ESN部分就不多做介绍了,你应该了解的,下面我们对ESN和BP改进和极限学习改进分别进行修改和说明,并进行仿真。 ESNBP的仿真: …

回声状态网络(ESN)实现手写数字识别(MNIST)

文章目录 回声状态网络状态方程输出方程分类问题 加载 MNIST 数据集标签 onehot 编码转化成时间序列训练 ESN储备池状态的时空分布测试结果 回声状态网络 状态方程 输出方程 分类问题 加载 MNIST 数据集 from torchvision.datasets import mnist train_set mnist.MNIST(./da…

回声状态网络(ESN)的公式推导及代码实现

1. ESN的任务 给定一段信号: u ( 0 ) , u ( 1 ) , ⋅ ⋅ ⋅ , u ( N t − 1 ) u(0),u(1),,u(N_t-1) u(0),u(1),⋅⋅⋅,u(Nt​−1) 和目标值: v (…

matlab 回声状态网络ESN的时间序列预测

1、内容简介 略 537-可以交流、咨询、答疑 2、内容说明 ESN是Jaeger于2001年提出一种新型递归神经网络,ESN一经提出便成为学术界的热点,并被大量地应用到各种不同的领域中,包括动态模式分类、机器人控制、对象跟踪核运动目标检测、事件监测…

手机esn不可用怎么解决_什么是ESN,为什么我不担心它是否干净?

手机esn不可用怎么解决 If you’re in the market for a cellphone, especially a used one, you’ll hear a lot of talk about ESNs with an emphasis on whether or not the phone is “clean”. What exactly does acronym stand for and what does it mean if the phone i…

回声状态网络(ESN)教程

回声状态网络(ESN)教程 基础概念 回声状态网络(Echo State Network)提出于2001年,曾经是研究的热点,但近年来随着RNN,LSTM与其它一些变种的网络的出现,现在研究比较少了,但是其在时间序列预测上还有着很不错的应用。…

Deep Learning之带你详细了解回声状态网络(ESN)

Abstract 首先呢写本篇博客的灵感来源于我在学习RNN(循环神经网络)时对于如何解决其循环结构,参数共享带来的长期依赖问题,我将在(一)中简要叙述RNN引出本文主角ESN(回声状态网络)。…

回声状态网络(echo state network,ESN)概述

一、提出 循环神经网络(Recurrent Neural Networks,RNNs)的训练是通过反向对权值直接优化来实现的,这种方式容易产生两个问题:收敛速度慢和易陷入局部最优。回声状态网络( echo state network,ESN) 由 Jaeger于2001年…

回声状态网络(ESN)原理详解(附源码实现)

最近在看回声状态网络(Echo State Network)的内容,因为很少搜到关于Echo State Network的快速入门讲解,所以打算写一下ESN的基本原理。 1、概念 回声状态网络作为一种新型的递归神经网络(如上图),也由输入层、隐藏层(即储备池)、输出层组成…

安装 Vue-devtools拓展程序

Chrome安装 Vue-devtools拓展程序 一、Vue-devtools简介二、安装1、打开终端下载仓库代码2、下载依赖node_modules3、编译打包4、修改manifest.json文件5、在Chrome浏览器中加载已解压的扩展程序 三、安装遇到的坑build 问题 四、换种方式下载1、安装命令2、修改manifest.json文…

Vue DevTools 使用指南 - 如何安装和使用 Vue DevTools 调试 Vue 组件

本文首发:《Vue DevTools 使用指南 - 如何安装和使用 Vue DevTools 调试 Vue 组件》 Vue Devtools 是 Vue 官方发布的调试浏览器插件,可以安装在 Chrome 和 Firefox 等浏览器上,直接内嵌在开发者工具中,使用体验流畅。Vue Devtoo…

Chrome DevTools 使用详解

【转自:https://segmentfault.com/a/1190000007877846】 基本够调试用了!有这么详细文章,真实很感谢作者! 写在前面:Chrome DevTools 系列文章正在紧张地整理当中,目前正在整理 DevTools 的第一部分&#…

Vue的devtools工具打包

Vue的devtools工具打包 最近想升级一下Vue的开发工具,因为升级到vue3后一直使用的是Vue.js devtools 6.0.0 beta 21。使用的是测试版,想到正式Vue3发布这么久了打算更新一下,用上最新的正式版(保持最新——来自程序员的执念&…

DevTools 页面

DevTools基础内容 DevTools 扩展为 Chrome DevTools 添加了功能。它可以添加新的 UI 面板和侧边栏,与检查的页面交互,获取有关网络请求的信息等等。 DevTools 扩展可以访问一组额外的 DevTools 特定的扩展 API: devtools.inspectedWindowde…

vue devtools调试工具安装(详细)

Vue调试工具安装(vue devtools) 第一步:下载vue-devtools 创建一个空的文件夹,命名最好可以见名知意,复制目录后打开命令行 在cmd中进入此文件夹目录下,输入npm install vue-devtools命令开始下载&#xff…