调度算法-内存页面置换算法

缺⻚异常(缺⻚中断)
与⼀般中断的主要区别在于:

  • 缺⻚中断在指令执⾏「期间」产⽣和处理中断信号,⽽⼀般中断在⼀条指令执⾏「完成」后检查和处理中断信号。
  • 缺⻚中断返回到该指令的开始重新执⾏「该指令」,⽽⼀般中断返回回到该指令的「下⼀个指令」执⾏。

页面中断流程:

⻚表项通常有如下图的字段:

  • 状态位:⽤于表示该⻚是否有效,也就是说是否在物理内存中,供程序访问时参考。
  • 访问字段:⽤于记录该⻚在⼀段时间被访问的次数,供⻚⾯置换算法选择出⻚⾯时参考。
  • 修改位:表示该⻚在调⼊内存后是否有被修改过,由于内存中的每⼀⻚都在磁盘上保留⼀份副本,因此,如果没有修改,在置换该⻚时就不需要将该⻚写回到磁盘上,以减少系统的开销;如果已经被修改,则将该⻚重写到磁盘上,以保证磁盘中所保留的始终是最新的副本。
  • 硬盘地址:⽤于指出该⻚在硬盘上的地址,通常是物理块号,供调⼊该⻚时使⽤。
     

常⻅的⻚⾯置换算法有如下⼏种:

  • 最佳⻚⾯置换算法(OPT)
  • 先进先出置换算法(FIFO)
  • 最近最久未使⽤的置换算法(LRU)
  • 时钟⻚⾯置换算法(Lock)
  • 最不常⽤置换算法(LFU)
     

最佳⻚⾯置换算法

最佳⻚⾯置换算法基本思路是, 置换在「未来」最⻓时间不访问的⻚⾯。
 

先进先出置换算法

可以选择在内存驻留时间很⻓的⻚⾯进⾏中置换,这个就是「先进先出置换」算法的思想。
 

最近最久未使⽤的置换算法

最近最久未使⽤(LRU)的置换算法的基本思路是,发⽣缺⻚时, 选择最⻓时间没有被访问的⻚⾯进⾏置换,也就是说,该算法假设已经很久没有使⽤的⻚⾯很有可能在未来较⻓的⼀段时间内仍然不会被使⽤。
 

在每次访问内存时都必须要更新「整个链表」。在链表中找到⼀个⻚⾯,删除它,然后把它移
动到表头是⼀个⾮常费时的操作。
所以, LRU 虽然看上去不错,但是由于开销⽐较⼤,实际应⽤中⽐较少使⽤。
 

时钟⻚⾯置换算法

时钟⻚⾯置换算法就可以两者兼得,它跟 LRU 近似,⼜是对 FIFO 的⼀种改进。
 

该算法的思路是,把所有的⻚⾯都保存在⼀个类似钟⾯的「环形链表」中,⼀个表针指向最⽼的⻚⾯。
当发⽣缺⻚中断时,算法⾸先检查表针指向的⻚⾯:

  • 如果它的访问位位是 0 就淘汰该⻚⾯,并把新的⻚⾯插⼊这个位置,然后把表针前移⼀个位置;
  • 如果访问位是 1 就清除访问位,并把表针前移⼀个位置,重复这个过程直到找到了⼀个访问位为 0 的⻚⾯为⽌;
     

最不常⽤算法

当发⽣缺⻚中断时,选择「访问次数」最少的那个⻚⾯,并将其淘汰。
 

它的实现⽅式是,对每个⻚⾯设置⼀个「访问计数器」,每当⼀个⻚⾯被访问时,该⻚⾯的访问计数器就累加 1。在发⽣缺⻚中断时,淘汰计数器值最⼩的那个⻚⾯。
 

缺点: 硬件成本,链表很大时,查询效率回比较低

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.mzph.cn/pingmian/29839.shtml

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈email:809451989@qq.com,一经查实,立即删除!

相关文章

【HarmonyOS】鸿蒙应用模块化实现

【HarmonyOS】鸿蒙应用模块化实现 一、Module的概念 Module是HarmonyOS应用的基本功能单元,包含了源代码、资源文件、第三方库及应用清单文件,每一个Module都可以独立进行编译和运行。一个HarmonyOS应用通常会包含一个或多个Module,因此&am…

简单处理字符串——6.14山大软院项目实训1

对于直接输出服务器返回的json到Debug,发现他还包含json的结构,但是不想调试json的返回结构,可以使用简单地处理字符串的方法,而不引入额外的库或复杂的JSON解析,但是这个解决方式是暂时的是投机取巧的,正确…

我主编的电子技术实验手册(08)——串联电阻分压

本专栏是笔者主编教材(图0所示)的电子版,依托简易的元器件和仪表安排了30多个实验,主要面向经费不太充足的中高职院校。每个实验都安排了必不可少的【预习知识】,精心设计的【实验步骤】,全面丰富的【思考习…

单例及工厂模式适合的场景

工厂模式适合以下场景: 1. **对象的创建与使用分离**:工厂模式可以将对象的创建和使用分离,客户端只需要通过工厂来创建对象,而无需关心对象的具体实现细节。 2. **对象的类型不容易预先确定**:当需要根据条件动态创…

Golang——gRPC认证和拦截器

一. OpenSSL 1.1 介绍 OpenSSL是一个开放源代码的软件库包,用于支持网络通讯过程中的加密。这个库提供的功能包含了SSL和TLS协议的实现,并可用于生成密钥、证书、进行密码运算等。 其组成主要包括一下三个组件: openssl:多用途的命…

有效招聘营销策略的六个组成部分

任何想吸引更多人购买其产品的公司都必须投资于市场营销。然而,当涉及到让更多的人了解公司的工作时,许多有效的营销活动可能不是招聘团队的首要考虑因素。为了超越招聘委员会上的“发布祈祷”策略,有必要包括有效招聘营销策略的所有组成部分…

车联网车载设备

智能网联主要通过OBU(On Board Unit,车载单元)实现。OBU是一种安装在车辆上用于实现V2X通信的硬件设备,可实现和其他车辆OBU(PC5)、路侧RSU(PC5)、行人(PC5)和V2X平台&am…

基于Redis实现共享session登录

搭配食用:Redis(基础篇)-CSDN博客 项目实现前的 Mysql中的表: 表说明tb_user用户表tb_user_info用户详情表tb_shop商户信息表tb_shop_type商户类型表tb_blog用户日记表(达人探店日记)tb_follow用户关注表tb_voucher优…

vlcplayer for android 源码编译log打印

vlcplayer for android 源码编译log打印 这篇文章记录了vlcplayer for android 开源库中libvlc.so中添加log打印的方法。 主要针对libvlc源码中msg_Info/msg_Err/msg_Warn/msg_Dbg 函数打印输出到Android log中。修改如下: vlc-android/libvlcjni/vlc/include/vlc…

c++编写自己的assert断言

文章目录 前言实现 前言 在 c c c中&#xff0c;assert只在debug模式下起作用&#xff0c;为了在release下也使用&#xff0c;我们可以实现自己的assert 实现 #include<iostream> #include<cstdlib>bool myAssert(bool expr, const char* file, const char* f…

if/case条件测试语句

一 条件测试 1.1返回码 $? $? 返回码 用来哦按段命令或者脚本是否执行成功 0 true为真就是成功成立 非0 false 失败或者异常 1.2 test 命令 可以进行条件测试 然后根据返回值来判断条件是否成立 -e &#xff1a;exist 测试目录或者目录是否存在 -d : director…

多目标跟踪 (MOT) 算法简介

据说即将开始的欧洲杯将会采用VAR来辅助裁判执法&#xff0c;这无疑将成为本届赛事的一大亮点。VAR&#xff0c;即视频助理裁判&#xff0c;是指在足球比赛中&#xff0c;裁判可以通过视频回放来辅助做出判罚。自2017年国际足联正式将VAR引入足球比赛以来&#xff0c;它已经在世…

【产品经理】订单处理6-审单方案

电商系统中订单管理员会对特殊类型的订单进行审核&#xff0c;普通订单则自动审核&#xff0c;本节讲述自动审单方案、手动审单以及加急审单。 一、自动审单 自动审单方案可按照方案形式制定&#xff0c;可一次性制定多套审单方案。 1. 审单通过条件有 执行店铺&#xff…

同三维T80006EHL-4K30CN 单路4K30 HDMI编码器(全国产化)

同三维T80006EHL-4K30CN 单路4K30 HDMI编码器 带1路HDMI环出和1路3.5音频输入&#xff0c;支持4K30&#xff0c;所有元器件全国产 一、 产品简介&#xff1a; T80006EHL-4K30CN 4K编码器&#xff08;采集盒&#xff09;是一款全国产化的专业4K HDMI音视频编码产品&#xff0c;…

2024年先进机械电子、电气工程与自动化国际学术会议(ICAMEEA 2024)

2024年先进机械电子、电气工程与自动化国际学术会议(ICAMEEA 2024) 2024 International Conference on Advanced Mechatronic, Electrical Engineering and Automation 会议地点&#xff1a;杭州&#xff0c;中国 网址&#xff1a;www.icameea.com 邮箱: icameeasub-conf.c…

大型ERP设计-业务与功能指引:外币折算与辅助账套

外币折算与辅助账套 前言&#xff1a;在对ORACLE和SAP的核心模块功能全面解读的基础上&#xff0c;给出大型ERP设计的建议-业务与功能指引&#xff0c;企业选型、开发大型ERP软件的公司和ERP顾问可以参考。模块包括财务、计划与制造、供应链、项目及设备(MRO)&#xff0c;初步预…

5.How Fast Should You Be When Learning?(你应该用多快的速度学习?)

Normally when I talk about learing quickly, I’m using speed as a synonym for efficiency.Use more effective methods and you’ll learn more in less time.All else being equal, that means you’re learing faster. 通常我在谈到快速学习时&#xff0c;是把“速度&qu…

【HarmonyOS NEXT 】鸿蒙detectBarcode (图像识码)

本模块提供本地图片识码和图像数据识码能力&#xff0c;支持对图像中的条形码、二维码、多功能码进行识别&#xff0c;并获得码类型、码值、码位置信息。 起始版本&#xff1a;4.1.0(11) 导入模块 import { detectBarcode } from kit.ScanKit; InputImage 待识别的图片信息…

【自记录】记一台i7四代老爷笔记本重装Win10 22H2

1 背景 手上有一台退役的老爷笔记本&#xff0c;清华同方锋锐 U430。因为比较轻便&#xff0c;最近重新翻出来用于临时抓个包和简单的脚本语言&#xff08;比方说Python&#xff09;编辑工作。但是现在像VSCode的新版本都要求Win10以上&#xff0c;像Continue这类的AI插件都跑…

ssh-add id_rsa_gitlab1 Error connecting to agent: No such file or directory

ssh-add id_rsa_gitlab1 Error connecting to agent: No such file or directory 目录 ssh-add id_rsa_gitlab1 Error connecting to agent: No such file or directory1. 启动 SSH 代理2. 添加 SSH 密钥3. 使用 Git Bash 或其他终端4. 使用 Pageant&#xff08;适用于 PuTTY 用…