非全局页面置换算法

1 先进先出算法(FIFO)

1.1 基本思路:

选择在内存中驻留时间最长的页面并淘汰之. 具体来说, 系统维护着一个链表, 记录了所有位于内存当中的逻辑页面. 从链表的排列顺序来看, 链首页面的驻留时间最长, 链尾页面的驻留时间最短. 当发生一个缺页中断时, 把链首页面的淘汰出局, 并把新的页面添加到链表的末尾.

1.2 评价:

性能较差, 调出的页面有可能是要经常要访问的页面, 并且有Belady现象. 很少单独使用.

2 最近最久未使用算法(LRU)

2.1 基本思路

当一个缺页中断发生时, 选择最久未使用的那个页面, 并淘汰之.

2.2 原理

它是对最优页面置换算法的一个近似, 其依据是程序的局限性原理, 即在最近一小段时间内, 它们还可能会再一次被频繁的访问. 反过来说, 如果在过去某些页面长时间未被访问, 那么在将来它们还可能会长时间地得不到访问.

2.3 评价

LRU算法需要记录某个和页面使用时间的先后顺序, 开销比较大, 两种可能的实现方法是:

  1. 系统维护一个页面链表, 最近刚刚使用过的页面作为首节点, 最久未使用的页面作为尾节点. 每一次访问内存时, 找到相应的页面, 把它从链表中摘下来, 再移动到链表之首, 每次缺页中断发生时, 淘汰链表尾部的页面.
  2. 设置一个活动页面栈, 当访问某页时, 将此页号压入栈顶, 然后考察栈内是否有与此页面相同的页号, 若有则抽出. 当需要淘汰一个页面时, 总是选择栈底的页面, 它就是最久未使用的.

3 时钟页面置换算法

时钟页面置换算法, LRU的近似, 对FIFO的一种改进.

3.1 基本思路:

  1. 需要用到页表项当中的访问位, 当一个页面被装入内存时, 把该位初始化为0, 然后如果这个页面被访问(读/写), 则把该位置为1.
  2. 把各个页面组织成环形链表(类似钟表面), 把指针指向最老的页面(最先进来).
  3. 当发生一个缺页中断时, 考察指针所指向的最老页面, 若它的访问位为0, 立即淘汰, 若访问位为1, 则把该位置置为0, 然后指针往下移动一格. 如此下去, 直到找到被淘汰的页面, 然后把指针移动到它的下一格.

3.2 流程

时钟页面置换算法图示:   

1. 假设内存中有四个物理页帧, A, B, C, D, 某一时刻有四个逻辑页面a, b, c, d与其对应(lp代表最末指针):

2. 假设此时来了一堆逻辑页号的访问请求序列: c, a, d, b, e, b, a, b, c, d, 那么有在访问前四个页号c, a, d, b时都不会产生缺页中断, 但是在访问逻辑页号e时, 此时e会产生缺页中断, 那么此时需要找到被替换的逻辑页, 此时lp指向a, 但是a所对应的物理页帧A的访问位是1, 所以把A的访问位置为0, 然后指针移向b:

3. 这次循环下去发现b c d的访问位都是1, 所以都置为0, 然后lp回到a:

4. 发现a对应的A的访问位是0, 那么把其替换为e, 并把e的访问位置为1, 把lp移到b:

5. 访问b的请求来了, 把b对应的B的访问位置为1:

6. 访问a的请求来了, 产生缺页中断, 此时lp在b, 但是b的访问位为1, 那么置为0, 然后吧lp移向c, 发现c的访问位是0, 直接替换为a, 并把访问位置为1, 把lp移向d:

7. b的访问请求来了, 没有产生缺页中断, 把b的访问位置为1:

8. c的访问请求来了, 产生缺页中断, 此时lp在d, 访问位是0, 那么直接替换掉, 访问位置为1, lp移动到e:

9. d的访问请求来了, 产生缺页中断, 此时lp在e, 但是e b a 对应的物理页帧的访问位都是1, 所以转一圈把所有访问位都置为1之后又回到了e, 此时e对应的A的访问位为0, 那么把其替换成d, 且访问位置为1, 然后把lp移至下一位b:

4 二次机会法

clock算法的不足: 将页面置换出去需要写入硬盘, 代价较大. 页表项中不仅有访问位, 还有写入位, 代表着这个物理页帧从硬盘到物理内存后(首次载入或者上次被置换进来)是否被写入过, 如果在置换算法中需要将一个页置换出去, 其对应的物理页帧的写入位是0, 那么不需要将其物理页帧内容写入硬盘, 只需要将其直接释放即可.

二次机会法思路: 与clock算法类似, 也是维护一个环形链表, 当发生页中断时, 检查指针指向的页对应的页表项的访问位和写入位, 如果都是0, 那么直接置换该页. 如果访问位及写入位有且仅有一位是1, 如果访问位和写入位都是1, 那么就把访问位置为0, 写入位置为1.

5 最不常用算法

思路: 缺页中断产生时, 选择访问次数最少的页作为被置换的页.

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

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

相关文章

github打开前端样式丢失_工具资源系列之 github 上各式各样的小徽章从何而来?...

前言平时大家在在逛 github 时或多或少都看到过项目首页各式各样的小徽章,不知道你是否和我一样好奇这些小徽章都是哪来的呢?首先我们先来一睹为快目前前端开发的三大主流框架: var ,看一看他们的 github 项目首页有哪些小徽章吧!小结:前端三大框架的徽章均不相同,由此可见,这…

vs code ipynb文件_UE4引擎 源码的获取、安装,以及VS配置

1.首先我们需要注册一个Epic账户,网址如下http://api.unrealengine.com/CHN/GettingStarted/Installation/index.html#bookmark12.创建GitHub账户https://github.com/3.登录UE4社区点击个人进入到个人之后点击连接的账户,之后在下面填写我们GITHUB的昵称…

js bind 传参、_js中的面向对象(一)

面向对象要解决的问题提到面向对象,大家的第一反应就是封装、继承和多态。对其做如下解释:封装:影藏细节(A对A——将多行代码取个名字或A对B——API调用合作)继承:继承的意思就是同上跟上述一样&#xff0c…

计算机网络中的物理层

1 基础概念 物理层解决如何在链接各种计算机的传输媒体上传输数据比特流, 而不是指具体的传输媒体. 物理层的主要任务, 确定与传输媒体接口有关的一些特性. -> 定义标准 1.1 物理层规定的特性: 机械特性: 定义物理连接的特性, 规定物理连接时所采用的规格, 接口形状, 引…

二元置信椭圆r语言_医学统计与R语言:多分类logistic回归HosmerLemeshow拟合优度检验...

微信公众号:医学统计与R语言如果你觉得对你有帮助,欢迎转发输入1:multinominal logistic regression "nnet")结果1: test (multinomial model)输入2:ordinal logistic regression "MASS")结果2&am…

python3.7.2安装与配置_python3.7.0 安装与配置

python 3.7.0 X64下载地址: https://www.python.org/ftp/python/3.7.0/python-3.7.0-amd64.exe 更多版本下载请移步到:https://www.python.org/downloads/release/python-370/ python可以在同一台机器上进行多版本的安装使用。 安装好python3.7.0后确认系…

操作系统处理器调度

1 背景 1.1 上下文切换: 切换CPU的当前任务, 从一个进程/线程到另一个保存当前进程/线程在PCB/TCB中的执行上下文(CPU状态)读取下一个进程/线程的上下文 1.2 CPU调度: 从就绪队列中挑选一个进程/线程作为CPU将要运行的下一个进程/线程调度程序: 挑选进程/线程的内核函数(通过…

c# 操作redisclient 设置过期时间_C# Redis分布式锁单节点

(给DotNet加星标,提升.Net技能)转自:热敷哥cnblogs.com/refuge/p/13774008.html为什么要用分布式锁?先上一张截图,这是在浏览别人的博客时看到的.在了解为什么要用分布式锁之前,我们应该知道到底什么是分布式锁.锁按照不同的维度,有多种分类.比如1、悲观…

计算机网络数据链路层检错编码 --- 循环冗余码CRC

实例说明 假如要发送的数据是1101 0110 11, 采用CRC校验, 生成多项式是10011, 那么最终发送的数据应该是? 发送端发送过程: 1. 最终发送的数据 要发送的数据 帧检验序列FCS(冗余码) 2. 利用生成多项式计算冗余码 计算冗余码的方法: 1. 加0, 要根据生成多项式中的阶为, 则…

计算机网络中数据链路层编码纠错编码 --- 海明码

1 概述 首先, 海明码是计算机网络中数据链路层的针对帧的位错提出的一种纠错编码方式. 海明码可以发现双比特错, 但纠正单比特错. 工作原理(简单解释): 牵一发动全身 2 工作流程 2.1 确定校验码位数r 海明不等式: 其中为冗余信息位数, 为信息位数 如果给定要发送的数据, …

计算机操作系统同步互斥

1 背景 在计算机系统里面, 多道程序设计是现代操作系统的重要特征, 且并行起到了很大的作用, 所以操作系统抽象出来了线程/进程的概念用来支持多道程序设计, 同时, 各个进程之间需要进行交互, CPU也需要进行调度来支持多进程. 多进程会涉及到共享资源访问的问题, 如果操作系统…

conda安装tensorflow-gpu简洁版_win10 tensorflow2.2 安装注意事项

学习新技术有两座大山,一座是安装配置环境,另一座是调试bug。对于想学习人工智能开发的人来说,安装配置tensorflow是必不可少的一步,这个过程对于初次接触的人来说,到处都是火坑。下面大家跟我一起,看看都会…

操作系统中死锁避免算法 --- 银行家算法

1. 背景 在银行系统中, 客户完成项目需要申请贷款的数量是有限的, 每个客户在第一次申请贷款时要声明完成该项目所需的最大资金量, 在满足所有贷款要求并完成项目时, 客户应及时归还. 银行家在客户申请的贷款数量不超过自己拥有的最大值时, 都应尽量满足客户的需要. 在这样的描…

python字符串对齐_Python - 字符串对齐

字符串对齐 本文地址: http://blog.csdn.net/caroline_wendy/article/details/20463231 Python中, 字符串对齐, 使用ljust(), 左对齐;rjust(), 右对齐; center(), 中间对齐; 也可以修改第三个参数, 修改填充数据, 默认使用空格; 代码如下: # -*- coding: utf-8 -*- # #File: Te…

操作系统中的死锁问题

1 死锁问题概述 一组阻塞的进程持有一种资源等待获取另一个进程所占有的一个资源.例子: 系统有两个磁带驱动器, P1和P2各有一个, 都需要另外一个. 2 系统模型 资源类型: , , ..., 包括CPU cycles, memory space, I/O devices 每个资源类型有实例. 每个进程使用资源过程如下…

chrome控制台如何把vw显示成px_你可能不知道的chrome调试技巧

本文是对常用的chrome调试技巧进行总结整理,如果你没有深入了解过chrome调试工具,此处总有你不知道的惊喜!从 Chrome 说起对于大部分人来说,Chrome 可能只是个浏览器,但是对于开发人员来说,它更是一个强大无…

gns3中两个路由器分别连接主机然后分析ip数据转发报文arp协议_ARP协议在同网段及跨网段下的工作原理...

前言:ARP协议是在链路层通讯中,已知目标IP地址,但是,仅有IP 地址是不够的,因为IP数据报必须封装成帧才能通过数据链路进行发送,而数据帧必须要有目的MAC地址,每一个网络设备在数据封装前都需要获取下一跳的…

操作系统文件系统

1 基本概念 1.1 文件系统和文件 1.1.1 简述 文件系统: 一种用于持久性存储的系统抽象 在存储器上: 组织, 控制, 导航, 访问和检索数据大多数计算机系统包含文件系统个人电脑, 服务器, 笔记本电脑ipod, Tivo/机顶盒, 手机/掌上电脑google可能是由一个文件系统构成的 文件: 文…

c++代码整洁之道pdf_别再问如何用python提取PDF内容了

作者:陈熹 来源:早起Python大家好,在之前的办公自动化系列文章中我们已经详细介绍了如何使用python批量处理PDF文件,包括合并、拆分、水印、加密等操作。今天我们再次回到PDF,详细讲解如何使用python从PDF提取指定的信…

查看文章影响因子的插件_Scholarscope--在新版PubMed中实现基于影响因子的文献筛选...

小编之前介绍过如何在Pubmed上直接显示杂志影响因子的方法,这个方法主要是依托Scholarscope插件,其实除了显示影响因子,这个插件还可以帮助大家根据影响因子筛选文献哦,操作也很简单,只要生成自定义过滤器即可&#xf…