计算机操作系统——页面置换算法

根据中国大学MOOC计算机操作系统(电子科技大学)而写.
如果自己要设计页面置换,要根据什么原则来设计?我们首先想到的是存储器的局部性原理(时间局部性、空间局部性)

Page removed should be the page least likely to be referenced in the future.删除的页面应该是将来最不可能被引用的页面。
Most policies predict the future behavior on the basis of past behavior.大多数原则根据过去的行为来预测未来的行为。

通过运行的历史来预测将来的行为,这也是根据局部性原理得到的。
在最近的将来,最少可能被引用到。(最近的将来不用的页面换出去)根据局部性原理,我们就得到了页面置换算法的设计思想。

一、Optimal Algorithm(最佳置换算法)

拿来用作比较的参考指标,工程上无法实现

  • 置换在将来再也不被访问的页面(预测将来发生的事)
  • 置换在最远的将来才被访问的页面

一般做题或考试的题目:

  • 给出访问页面的流(访问序列)Page Address Stream
  • 给出驻留集(页框数,盛放多少个页面)
  • 给出条件(预调页、请求调页)
  • 给出置换算法
  • 要求计算缺页次数及缺页率

预调页:将预计在不久之后便会被访问的页面预先调入内存。
请求调页:一直推迟到进程要访问的页面不在物理内存时为止,由此引起缺页中断。

二、Least Recently Used Algorithm(最近最少使用算法)

  • Replaces the page that has not been referenced for the longest time.替换最长时间未被引用的页面。
  • By the principle of locality,this should be the page least likely to be referenced in the near future.根据位置原则,这应该是在不久的将来最不可能被引用的页面。
  • Each page could be tagged with the time of last reference.This would require a great deal of overhead.每页都可以用最后一次引用的时间来标记。这将需要大量的开销。

  • 从原理上看,LRU算法可以被实现;但是任何一种实现方法都将产生很大的系统开销。因此,许多OS据使用近似LRU算法。
  • 一些应用程序具有很强的非局部性存储引用(比如顺序存储引用)特征。对于此类应用程序,LRU算法就不再由优势。

三、First-in First-out Algorithm(先进先出算法)

  • Treats page frames allocated to a process as a circular buffer.-将分配给进程的页面帧视为循环缓冲区。
  • Pages are removed in round-robin style.-页面以循环方式移除。
  • Simplest replacement policy to implement.-实施最简单的更换政策。
  • Page that has been in memory the longest is replaced.-替换内存中最长的页面。
  • These pages many be needed again very soon.-这些页面可能很快就会被再次使用。
  • FIFO算法最简单,最容易实现。
  • 如果应用程序具有顺序存储引用特征,那么使用FIFO算法将获得很好的性能。
  • 但是大多数应用程序具有局部存储引用特征。对于此类的应用程序,FIFO算法的性能是很差的。
  • 容易产生抖动(抖动:即对刚被替换出去的页,立即又要被访问。需要将它调入,因无空闲内存又要替换另一页,而后者又是即将被访问的页,于是造成了系统需花费大量的时间忙于进行这种频繁的页面交换,致使系统的实际效率很低,严重导致系统瘫痪.)
  • 可能存在Belady现象( Belady现象:虚拟存储器系统中的一种异常现象,即增加进程的页框数,缺页率反而上升。)

四、Clock Algorithm(时钟置换算法)

LRU算法的近似,系统开销很大,在现代操作系统中使用很多.

  • Additional bit called a use bit.-使用位的附加位。
  • When a page is first loaded in memory,the use bit is set to 1.-当页面第一次载入内存时,使用位设置为1。
  • When the page is referenced,the use bit is set to 1.-当页面被引用时,使用位被设置为1。
  • When it is time to replace a page,the first frame encountered with the use bit set to 0 is replaced.-当需要替换页面时,使用位设置为0时遇到的第一帧被替换。
  • During the search for replacement,each use bit set to 1 is changed to 0.-在搜索替换的过程中,每个设置为1的使用位都变为0。

CLOCK算法中,系统将置换范围内的所有frame组成一个环形缓冲区,并为其设置一个扫描指针.
没有进行页面置换时,扫描指针总是指向上一次进行页面置换时被置换页面所在位置的下一个位置.

当需要进行页面置换时,系统将移动扫描指针搜索置换范围内的各个frame以便找到一个U位为0的frame.

  • 如果当前扫描指针所指向的frame其U位为1,那么系统将该frame的U位设置为0,扫描指针移到下一个位置,继续搜索.
  • 如果当前扫描指针所指向的frame其U位为0,则系统将该frame中的页面作为被置换页面,同时把扫描指针移到下一个位置,停止搜索.


    改进后的Clock置换算法:
    (最应该被淘汰的页)1类(A=0,M=0):表示该页最近即未被访问,又未被修改,是最佳淘汰页。
    2类(A=0,M=1):表示该页最近未被访问,但已被修改。
    3类(A=1,M=0):表示该页最近已被访问,但未被修改,该页有可能再被访问。
    (最不应该被淘汰的页)4类(A=1,M=1):表示该页最近已被访问且被修改,该页可能再被访问。

页面置换算法——最佳置换算法、最近最少使用算法、先进先出算法、时钟置换算法相关推荐

  1. 大盘点 | 2020年「13篇」人脸算法最佳综述

    在过去的一年中,计算机视觉领域出现了许多优秀的工作,并推动了相关领域的技术发展与进步.去年上半年,极市曾盘点过计算机视觉领域综述论文,并进行了分类整理,得到了很多读者的支持.因此,在2021年初,我们 ...

  2. 最佳值换算法c语言,页面置换算法---最佳置换算法(OPT)

    最佳置换算法(OPT) 什么是OPT 最佳置换算法,其所选择的被淘汰的页面将是以后永不使用的,或是在最长(未来)时间内不再被访问的页面.采用最佳置换算法通常可保证最低的缺页率.但是人们目前还无法与之, ...

  3. 页面置换算法最佳页面置换算法模拟JAVA实现

    操作系统存储管理页面置换算法-----最佳页面置换算法模拟(JAVA实现) 话不多说,我们直接展示 package com.company;import java.util.Arrays;/*** @ ...

  4. 3.2.3 OS之页面置换算法(最佳置换算法、先进先出置换算法、最近最久未使用置换算法、普通时钟置换算法、改造型时钟置换算法)

    文章目录 0.思维导图 1.最佳置换算法---OPT 2.先进先出置换算法---FIFO 3.最近最久未使用置换算法---LRU 4.时钟置换算法---CLOCK 5.改造型时钟置换算法 0.思维导图 ...

  5. Java实现的时钟置换算法_时钟页面置换算法

    一.局部:时钟置换算法: 1.最优置换算法:理论上的,预测最晚调用的页面. 2.LRU算法,置换掉最久未使用的. 一个链表.一个页面被调用的话,会被从链表中(它原本的位置)移动到链表首,而每次缺页,则 ...

  6. java 递归编译_java计算x^n的递归方法?求高手给个算法最佳的 最好能编译通过 本人处于java初学者时期^^...

    java计算x^n的递归方法?求高手给个算法最佳的 最好能编译通过 本人处于java初学者时期^^ 关注:193  答案:4  mip版 解决时间 2021-02-03 20:14 提问者西伯利亚狼 ...

  7. 数据分析利器:XGBoost算法最佳解析

    作者:symonxiong,腾讯 CDG 应用研究员 XGBoost是一种经典的集成式提升算法框架,具有训练效率高.预测效果好.可控参数多.使用方便等特性,是大数据分析领域的一柄利器.在实际业务中,X ...

  8. 最坏适应算法c语言源码,首次适应算法,最佳适应算法,最坏适应算法源代码

    这是一个非常完美的程序,输出显示的格式也很棒,里面包含首次适应算法,最佳适应算法,最坏适应算法 #include #include #define Free 0 //空闲状态 #define Busy ...

  9. czt算法c语言实现,基--2按频率抽取的FFT算法Decimation-in-Frequency(DIF).ppt

    基--2按频率抽取的FFT算法Decimation-in-Frequency(DIF) 第四节基--2按频率抽取的FFT算法Decimation-in-Frequency(DIF)(Sander-Tu ...

最新文章

  1. 在为时已晚前 阻止物联网安全威胁和攻击
  2. mysql 3.6.4_TOMCAT5+MYSQL5+JIRA3.6.4配置说明
  3. powerdesigner 新建按钮是灰色的
  4. 《SolidWorks 2016中文版机械设计从入门到精通》——第1章 认识SolidWorks1.1 SolidWorks概述...
  5. DL之PerceptronAdalineGD:基于iris莺尾花数据集利用Perceptron感知机和AdalineGD算法实现二分类
  6. 【Oracle 学习笔记】Day 1 常用函数整理(转换、DeCode),表的外键
  7. 出现次数超过一半的数(信息学奥赛一本通-T1186)
  8. Java内功修炼系列一工厂模式
  9. https 方式使用git@osc设置密码的方式
  10. NASM汇编语言与计算机系统11-9号与0X16号中断显示键盘输入(int)
  11. 《Ray Tracing in One Weekend》——Chapter 1: Output an image
  12. python如何用requests传送json格式数据
  13. 安装PhantomJS
  14. 22数学建模美赛 22美赛C题
  15. R语言大数据分析之新闻文本数据分析
  16. MATLAB图像去雾算法RETINEX实现
  17. 每周一磁 · 磁性材料的居里温度与工作温度
  18. Jenkins 登录时离线 offline
  19. 【Linux 0.11】第九章 块设备驱动程序
  20. 很多情侣看了以后,不在关机

热门文章

  1. LeetCode 482. 密钥格式化
  2. LeetCode 1160. 拼写单词
  3. Python环境下,提高pip安装库速度的方法!
  4. 总结python换源的方法:Linux与windows系统
  5. python编码规范与命名规范
  6. 机器学习竞赛中,为什么GBDT往往比深度学习更有效?
  7. 斯坦福CS224n追剧计划【大结局】:NLP和深度学习的未来
  8. 一个问题就可以辨别真假NLP(自然语言处理)研究者
  9. 会议交流 | 如何将图谱实体与关系更好的向量化,并基于推理扩充知识边界?——DataFun Summit2022知识图谱在线峰会...
  10. 论文浅尝 - 计算机工程 | 大规模企业级知识图谱实践综述