《操作系统 - 清华大学》6 -7:局部页面置换算法:Belady现象
文章目录
- 1. 定义
- 2. LRU、FIFO和Clock的比较
1. 定义
局部页面置换算法的特点是针对一个正在运行的程序,它访问内存的情况,访问页的情况,来决定应该采取什么样策略,把相应的页替换出去,站在算法本身角度来考虑置换哪个页。
Belady现象是比较异常现象,当给运行程序分配的物理业越多,按道理来说它产生缺页次数应该越少,但是如果采取某些页面置换算法之后,会发现出现相反的情况,给它分配的物理页越多,产生缺页的次数反而也跟着增加。
-
FIFO 算法就是这么一种算法,在给它增加更多的物理页之后,并没有说缺页次数减少,反而缺页次数增加了,什么原因?
原因在于 FIFO 算法并没有考虑程序访问内存的动态特征,算法本身的替换策略和访问内存的动态特征是矛盾的,目标是不一致的,替换的页面并不是当前程序不会访问的页面。
FIFO算法的Belady现象:
增加物业帧,从3变成4,但是在同样访问序列下,它的缺页次数从9变成10,这不是我们预期的,给它更多的物理资源,给它更多的物理业,结果它产生缺页次数更加多了,期望是少。 -
那怎么来解决这个现象?
在看另一种 LRU 算法:
同样的访问序列,LRU 算法 分三个物业页帧,会产生十次缺页错误,但是如果给它分4个物理页帧,它只会产生8次缺页错误。这是符合预期的,给他物理资源越多,缺页错误次数就越少。 -
那为什么 LRU 算法会比 FIFO 算法在这方面要做得更好呢?
LRU 算法符合栈算法的特点,意味着给物业资源越多,它产生的缺页次数就越少。但是 FIFO 算法不满足栈算法特点,那么就不会产生这种现象。
2. LRU、FIFO和Clock的比较
LRU 算法和 FIFO算法在处理过程中都可以用链表或者栈来表示驻留在内存中次序,但是 LRU 算法除了考虑驻留时间之外,还考虑最近访问时间,如果最近这个页被访问到了,会把它从列表中取出来放头上去。但是 FIFO 没有这个过程,那这也就是 FIFO 和 LRU 很重的区别。如果程序具有局部性特点,LRU算法就可以更好适应局部性特点,产生更少的缺页次数。
但是换个角来说,缺页次数不光是算法本身的问题,还和程序本身特点相关,如果程序没有局部性特征,那其实 LRU 算法和 FIFO 算法最后的结果有可能一样,就是 LRU 可能会退化为 FIFO 算法。
而 Clock 算法其实是对 LRU 算法的近似。因为 Clock 算法只用一个 bit 或者两个 bit来表示访问时间,很明显一两个 bit 不可能精确地表示出一段时间内不同的页面访问先后顺序,只是近似,所以本质上Clock算法也是一种类似于 LRU 算法的一种算法,它使用一些硬件的bit,来模拟访问时间先后顺序,所以它可以有效地去逼近或者模拟 LRU 算法,而且它的开销也还很小,这是 Clock 算法的特点。
在某种不具有局部性的页面访问序列下,LRU 会退化为 FIFO,那 Clock算法也可能会退化为 FIFO 算法,其实可以看出来,如果要有效减少缺页次数,除了算法之外,还对本身访问序列有一定要求,最好是具有局部性访问特征,那么 LRU算法 Clock 算法才能发挥效果。如果算法本身不具有局部性,那么 LRU FIFO Clock 就没什么区别了。
另一方面 LRU 算法开销比较大,FIFO 算法开销小,但是它的效率并不好,所以折中Clock算法, Clock 算法本质上也是 FIFO 算法,但是在 FIFO 算法基础上增加了对页面访问时间的记录,但不是精准记录,而是粗略记录,根据 access bit 或者 dirty bit 来记录这个页的访问情况,开销比较小,效果又接近 LRU,所以说它是更加实际,相对来说比 LRU 和 FIFO 都要好。
相关文章:
《操作系统 - 清华大学》6 -7:局部页面置换算法:Belady现象
文章目录 1. 定义2. LRU、FIFO和Clock的比较 1. 定义 局部页面置换算法的特点是针对一个正在运行的程序,它访问内存的情况,访问页的情况,来决定应该采取什么样策略,把相应的页替换出去,站在算法本身角度来考虑置换哪个…...
网络原理之 TCP 协议
目录 1. TCP 协议格式 2. TCP 原理 (1) 确认应答 (2) 超时重传 (3) 连接管理 a) 三次握手 b) 四次挥手 (4) 滑动窗口 (5) 流量控制 (6) 拥塞控制 (7) 延时应答 (8) 捎带应答 3. TCP 特性 4. 异常情况的处理 1) 进程崩溃 2) 主机关机 (正常流程) 3) 主机掉电 (…...
pinn爱看论文展
1.zhiwang 基于物理信息神经网络的波动方程优化求解方法 吴丹澜1梁展弘2余懿3蔡博3郑邦宏4王梓超4张紫玲4 1.肇庆学院计算机科学与软件学院,大数据学院2.香港城市大学电气工程系3.云浮市新兴县公安局4.肇庆学院计算机科学与软件学院、大数据学院 2,zhiwang 就爱…...
Burp(5)web网页端抓包与app渗透测试
声明! 学习视频来自B站up主 泷羽sec 有兴趣的师傅可以关注一下,如涉及侵权马上删除文章,笔记只是方便各位师傅的学习和探讨,文章所提到的网站以及内容,只做学习交流,其他均与本人以及泷羽sec团队无关&…...
Spring 基础
什么是 Spring 框架? Spring 是一款开源的轻量级 Java 开发框架,旨在提高开发人员的开发效率以及系统的可维护性。 我们一般说 Spring 框架指的都是 Spring Framework,它是很多模块的集合,使用这些模块可以很方便地协助我们进行开发&#…...
go 集成nacos注册中心、配置中心
使用限制 Go>v1.15 Nacos>2.x 安装 使用go get安装SDK: go get -u github.com/nacos-group/nacos-sdk-go/v2 快速使用 初始化客户端配置ClientConfig constant.ClientConfig{TimeoutMs uint64 // 请求Nacos服务端的超时时间,默…...
一文掌握 OpenGL 几何着色器的使用
学习本文需要具备 OpenGL ES 编程基础,如果看起来比较费劲,可以先看入门文章 OpenGL ES 3.0 从入门到精通系统性学习教程 。 什么是几何着色器 几何着色器(Geometry Shader) OpenGL 管线中的可选着色器阶段,位于顶点着色器(Vertex Shader) 和光栅化阶段 之间。 其核心…...
《数据资产入表:企业资产评估的新契机》
《数据资产入表:企业资产评估的新契机》 在当今数字经济时代,数据作为关键生产要素,其重要性日益凸显。国家高度重视数据资产,陆续出台了一系列重磅政策。其中,“数据二十条” 即《中共中央 国务院关于构建数据基础制度…...
架构14-资源与调度
零、文章目录 架构14-资源与调度 1、资源模型 (1)概述 在 Kubernetes 中,资源模型是一个非常重要的概念,它涉及如何管理和分配集群中的资源,以确保 Pod 能够在最合适的节点上运行。资源模型不仅包括物理资源&#…...
uni-app H5端使用注意事项 【跨端开发系列】
🔗 uniapp 跨端开发系列文章:🎀🎀🎀 uni-app 组成和跨端原理 【跨端开发系列】 uni-app 各端差异注意事项 【跨端开发系列】uni-app 离线本地存储方案 【跨端开发系列】uni-app UI库、框架、组件选型指南 【跨端开…...
springboot407美发管理系统(论文+源码)_kaic
摘 要 传统办法管理信息首先需要花费的时间比较多,其次数据出错率比较高,而且对错误的数据进行更改也比较困难,最后,检索数据费事费力。因此,在计算机上安装美发管理系统软件来发挥其高效地信息处理的作用࿰…...
Apache-HertzBeat 开源监控默认口令登录
0x01 产品描述: HertzBeat(赫兹跳动) 是一个开源实时监控系统,无需Agent,性能集群,兼容Prometheus,自定义监控和状态页构建能力。HertzBeat 的强大自定义,多类型支持,高性能,易扩展,希望能帮助用户快速构建自有监控系统。0x02 漏洞描述: HertzBeat(赫兹跳动) 开源实时…...
发送请求时遇到了数据库完整性约束错误 1048 Column ‘platform‘ cannot be null
可以这样解决 在 Vue 2 中封装接口请求时,确保每次请求都包含 platform Header 参数的最佳实践是通过创建一个全局的 Axios 实例,并为这个实例设置默认的 Header。这样可以确保所有通过该实例发送的请求都会自动包含 platform 参数。此外,你…...
Go快速开发框架集成Vue3漂亮的动态流程图编辑和动态流程展示插件
温馨提示:我们分享的文章是给需要的人,不需要的人请绕过,文明浏览,误恶语伤人! 前言 为大家在开发流程相关业务时有个漂亮流程图展示,我们集成一个实用的流程图编辑器,让流程开发变得简单&…...
【SH】微信小程序调用EasyDL零门槛AI开发平台的图像分类研发笔记
文章目录 微信小程序字符串字符串模板字符串拼接 上传图片GET请求测试编写测试代码域名不合法问题 GET和POST请求测试 微信小程序字符串 字符串模板 这是ES6引入的特性,允许你通过反引号()创建模板字符串,并在其中嵌入变量或表达…...
NanoLog起步笔记-6-StaticLogInfo
nonolog起步笔记-6-StaticLogInfo StaticLogInfo文件名和行号文件名和行号的传入log参数 RuntimeLogger::registerInvocationSitelogid为什么只能被赋一次值 reserveAlloc加入消息头finishAlloc返回 StaticLogInfo 写C语言编译前端时,给我印象深刻的一部分是&#…...
【OpenCV】视频录制
初始化一个视频写入对象,目的是将图像帧序列保存为视频文件。使用了OpenCV库中的cv2.VideoWriter类来创建这个对象,并且设置了视频的编码格式、帧率以及分辨率。 导入库 import cv2 import datetime cv2 是 OpenCV 库的 Python 接口,提供了…...
同城到家预约上门服务解决方案:家政预约同城服务小程序
### 系统架构"同城到家预约上门服务解决方案:PHP家政预约同城服务小程序"采用B/S架构,后端使用PHP语言开发,前端则基于微信小程序平台。系统分为用户端、服务端和后台管理端,各端相互依赖又相互独立,支持多种…...
linux-14 关于shell(十三)type,内置命令和外部命令
我们说一个命令,叫做type,先来看看type的效果,比如说我指定type后面这个命令叫cd,如下图, 你看它说什么?cd is a shell builtin,我再 type ls,看它会说什么?如下图&#…...
使用php生成、识别二维码
1、生成二维码 要求: # 详见:https://packagist.org/packages/bacon/bacon-qr-code php: ^8.1iconv Library imagick Library # 或者:GD library 下载: # 详见:https://packagist.org/packages/bacon/bacon-qr-cod…...
pytorch多GPU训练教程
pytorch多GPU训练教程 文章目录 pytorch多GPU训练教程1. Torch 的两种并行化模型封装1.1 DataParallel1.2 DistributedDataParallel 2. 多GPU训练的三种架构组织方式2.2 数据不拆分,模型拆分(Model Parallelism)2.3 数据拆分,模型…...
日拱一卒(12)——leetcode学习记录:2的幂
一、题目 判断一个整数n是否是2的幂次,是返回True,否返回False 二、分析 1. 递归法:如果n是0,返回False,如果n是1,返回True,其他情况,将n//2递归 2. 数学法:还是从数…...
非文件形式的内存动态函数库调用接口
使用memfd的系统调用接口将动态库加载到proc虚拟文件系统,提供的fd为进程持有的句柄,通过dlopen的path指向此句柄,即可实现非文件系统加载动态链接库。 文章目录 一、memfd_create二、dl_open三、示例参考 一、memfd_create 接口名称int mem…...
TimeXplusplus——提高时间序列数据的可解释性,避免琐解和分布偏移问题的深度学习可解释性的框架
摘要 论文地址:https://arxiv.org/abs/2405.09308 源码地址:https://github.com/zichuan-liu/timexplusplus 信号传输技术的优化对于推动光通信的发展至关重要。本文将详细探讨线路编码技术的目标及其实现方式。线路编码旨在提高带宽和功率效率…...
第十七届山东省职业院校技能大赛 中职组“网络安全”赛项资源任务书样题②
第十七届山东省职业院校技能大赛 中职组“网络安全”赛项资源任务书样题② 模块A 基础设施设置与安全加固(200分)A-1 登录安全加固(Windows, Linux)A-2 Nginx安全策略(Linux)A-3日志监控(Windows)A-4中间件…...
嵌入式蓝桥杯学习9 usart串口
复制一下之前ADC的工程,打开cubemx cubemx配置 1.在Connectivity中点击USART1 Mode(模式):Asynchronous(异步模式) 2.将PA9设置为USART1_TX,PA10设置为USART1_RX。 3.配置Parameter Settings. Baud R…...
golang实现简单的redis服务4.0(持久化)
redis的持久化机制与实现原理RDB工作原理问题1:如果数量很大怎么办?问题2:子线程在持久化期间有新的数据写入会发生什么?如何保证数据一致性? AOF的原理如何解决aof文件越来越大的问题aof文件如何重写?aof如何恢复数据aof文件有问题(损坏了)恢复会发生什么?怎么办?aof有哪…...
安卓底层相机流的传输方式
这是安卓 相机流的定义 typedef enum {CAM_STREAMING_MODE_CONTINUOUS, /* continous streaming */CAM_STREAMING_MODE_BURST, /* burst streaming */CAM_STREAMING_MODE_BATCH, /* stream frames in batches */CAM_STREAMING_MODE_MAX} cam_streaming_mode_t; 在ca…...
【YashanDB知识库】使用c-调用yashandb odbc驱动执行SQL时报YAS-08008 not all variables bounded
本文内容来自YashanDB官网,原文内容请见 https://www.yashandb.com/newsinfo/7508307.html?templateId1718516 问题现象 某客户的应用(c# asp.net)在运行时报如下异常: 问题的风险及影响 客户的应用无法正常运行 问题影响的版本 所有的yashandb版本…...
SQL项目实战与综合应用——项目设计与需求分析
项目设计与需求分析是软件开发过程中的核心环节,尤其在涉及数据库的应用时,良好的设计将直接影响到项目的可扩展性、性能和维护性。本文将深入探讨数据库设计的最佳实践,结合 C 与 SQL 的实际应用场景,涵盖项目需求收集、数据库设…...
JAVA基础学习笔记_反射+动态代理
文章目录 反射获取class对象的三种方式获取构造方法获取成员变量获取成员方法反射的作用 动态代理 反射 允许对成员变量\成员方法\构造方法的信息进行编程访问 把类内的信息扒的干干净净,获取解剖 获取从class字节码文件中获取 获取class对象的三种方式 public static void …...
Go 协程上下文切换的代价
在 Go 语言中,协程(Goroutine)是一种非常轻量级的并发执行单元,设计之初就是为了简化并发编程并提高性能。协程的上下文切换被认为是非常高效的,但是它的真正性能优势需要我们深入了解其背后的机制。 本文将深入探讨 …...
TikTok代理IP:如何帮助解决限流、封号问题?
在当今的社交媒体领域,TikTok仍然是“当红”平台。然而,许多用户在使用 TikTok 的过程中,常常会遇到限流和封号的问题,比如视频零播放,带来了极大的困扰。 这些限流和封号问题的出现,引发了用户对解决方法…...
vue中验证码的实现方式
在写登录页的时候有的系统会让你也进行一下验证码绘制,那么验证码如何实现的呢?我在写登录页的时候通过将登录框,验证码分开页面来写,最后将它们变成标签来导入到我的样式页面中,这样写不仅方便,更容易修改…...
从零开始学习18串锂电池BMS保护板
18串锂电池BMS保护板实物开源资料! BMS系统ADBMS1818/LTC6813凌力尔特主从一体机采集板:STM32F103LTC6813/ADBMS1818程序已调通: 1:18串电池电压(采集精度1.2mV/3mV) 2:8通道温度采集 3:一通道电流采集 4:RS485通信(楼…...
最左侧1问题的一种二分法解法
背景 最近看TI的C6000系列DSP文档时了解到Leftmost 1 or 0 counting功能, 网上搜索到这篇相关博客(最左侧1问题),发现里面的二分法代码自己看不懂,于是尝试用更容易看懂的方式重写一下。 思路 假设输入数据不超过3…...
HarmonyOS-中级(四)
文章目录 Native适配开发三方库的基本使用 🏡作者主页:点击! 🤖HarmonyOS专栏:点击! ⏰️创作时间:2024年12月09日11点12分 Native适配开发 Node-API HarmonyOS Node-API 是 HarmonyOS 提供的…...
rust中self、self、self区别
self的类型,在给出调用者和方法名的前提下,Rust可以准确地推导出方法是否是只读的(&self),是否需要修改数据(&mut self),是否会获取数据的所有权(self࿰…...
种子流和花粉流怎么理解它们之间的大小关系
种子流和花粉流是植物繁殖和遗传多样性研究中的两个重要概念,它们分别描述了种子和花粉在空间上的传播过程。理解它们之间的大小关系,即传播距离和对遗传结构的影响,对于生态学和保护生物学具有重要意义。 种子流(Seed Dispersal&…...
Mybatis-plus 源码解读
简述 本篇主要针对MybatisPlus源码进行解读。 案例 上一篇已经讲了Springboot如何集成MybatisPlus: springboot-mybatis-plus集成篇 源码解析 和Springboot集成Mybatis一样, 依赖了mybatis-plus-spring-boot3-starter,其中主要关注spri…...
web 期末作业简单设计网页——“我的家乡”网站简单设计
1、网页效果 首页 七彩云南页 旅游攻略页 用户页面 2、源代码 首页 <!DOCTYPE html> <html lang"en"> <head><meta charset"UTF-8"><title>首页</title><link rel"stylesheet" href"out.css&quo…...
Redis篇-3--原理篇2--Redis事务
1、概述 Redis 提供了简单的事务机制,Redis 事务的本质是一组命令的集合。当执行redis事务时,即一次性按照添加顺序依次执行这些命令,中间不会被打断或者干扰。 Redis 的事务机制并不像关系型数据库中的事务那样提供完整的ACID特性…...
GEE:CCDC 分类组件,对每个分段进行分类
作者:CSDN @ _养乐多_ 连续变化检测与分类(Continuous Change Detection and Classification, CCDC) 利用了时间序列拟合来对影像中的像素值随时间的变化趋势建模。每一段模型代表一个时间段内的地表覆盖类型和状态。 本文将解释如何在谷歌地球引擎(Google Earth Engine,…...
常见排序算法总结 (四) - 快速排序与随机选择
快速排序 算法思想 每一轮在数组相应的范围上随机找一个元素进行划分,将不大于它的所有元素都放到左边,将大于它的元素都放到右边。在左右两个子数组上不断地递归,直到整个数组上有序。 注意:实现时选择的时参考荷兰国旗问题优化…...
[创业之路-187]:《华为战略管理法-DSTE实战体系》-1-从UTStarcom的发展历程,如何辩证的看企业初期发展太顺利中的危机
目录 一、UTStarcom(UT斯达康)的发展历程 1、创立与初期发展 2、快速成长与上市 3、技术创新与业务拓展 4、战略调整与持续发展 二、从UTStarcom的发展历程,如何辩证的看企业初期发展太顺利中的危机 1、企业初期发展的顺利表现 2、顺…...
C缺陷与陷阱 — 3 深入理解表达式
目录 1 表达式的运算次序 1.1 自增或自减操作符 1.2 函数参数 1.3 函数指针 1.4 函数调用 1.5 嵌套赋值语句 2 函数调用不作为函数参数 3 赋值语句的谨慎使用 1 表达式的运算次序 除了少数操作符(函数调用操作符 ( )、&&、| |、? : 和 ,ÿ…...
Next.js 系统性教学:中间件与国际化功能深入剖析
更多有关Next.js教程,请查阅: 【目录】Next.js 独立开发系列教程-CSDN博客 目录 一、Next.js 中间件 (Middleware) 功能解析 1.1 什么是中间件? 1.2 Next.js 中间件的工作机制 1.3 中间件的功能应用 身份验证与授权 请求重定向 修改请…...
openWebUI+ollamawindows+不用docker+webLite本地安装
openWebUI & ollama & windows & 不用docker & webLite 本地安装 总结一下安装教程 10核CPU16G内存 两个web框架都可以,先说简单的 ollama-webui-lite(https://github.com/ollama-webui/ollama-webui-lite) 轻量级,只使用nodejs 先装…...
动态规划——机器分配、01背包问题
一、机器分配 题目名称:机器分配 题目描述: 总公司拥有高效设备M台,准备分给下属的N个分公司。 各分公司若获得这些设备,可以为国家提供一定的盈利。 问:如何分配这M台设备才能使国家得到的盈利最大?求出最…...
leetcode——哈希表1
242.有效的字母异位词 给定两个字符串 s 和 t ,编写一个函数来判断 t 是否是 s 的 字母异位词 。 示例 1: 输入: s "anagram", t "nagaram" 输出: true示例 2: 输入: s "rat", t "car" 输出: false 提示: 1 < s.le…...