首页 > 编程语言 >页面置换算法

页面置换算法

时间:2022-10-06 10:32:13浏览次数:64  
标签:置换 链表 访问 算法 内存 缺页 页面

在程序运行过程中,如果要访问的页面不在内存中,就发生缺页中断从而将该页调入内存中。此时如果内存已无空闲空间,系统必须从内存中调出一个页面到磁盘对换区中来腾出空间。

页面置换算法和缓存淘汰策略类似,可以将内存看成磁盘的缓存。在缓存系统中,缓存的大小有限,当有新的缓存到达时,需要淘汰一部分已经存在的缓存,这样才有空间存放新的缓存数据。

页面置换算法的主要目标是使页面置换频率最低(也可以说缺页率最低)。

  1. 最佳

OPT, Optimal replacement algorithm

所选择的被换出的页面将是最长时间内不再被访问,通常可以保证获得最低的缺页率。

是一种理论上的算法,因为无法知道一个页面多长时间不再被访问。

举例:一个系统为某进程分配了三个物理块,并有如下页面引用序列:

7,0,1,2,0,3,0,4,2,3,0,3,2,1,2,0,1,7,0,1

开始运行时,先将 7, 0, 1 三个页面装入内存。当进程要访问页面 2 时,产生缺页中断,会将页面 7 换出,因为页面 7 再次被访问的时间最长。

  1. 最近最久未使用

LRU, Least Recently Used

虽然无法知道将来要使用的页面情况,但是可以知道过去使用页面的情况。LRU 将最近最久未使用的页面换出。

为了实现 LRU,需要在内存中维护一个所有页面的链表。当一个页面被访问时,将这个页面移到链表表头。这样就能保证链表表尾的页面是最近最久未访问的。

因为每次访问都需要更新链表,因此这种方式实现的 LRU 代价很高。

4,7,0,7,1,0,1,2,1,2,6

请添加链接描述 3. 最近未使用


NRU, Not Recently Used

每个页面都有两个状态位:R 与 M,当页面被访问时设置页面的 R=1,当页面被修改时设置 M=1。其中 R 位会定时被清零。可以将页面分成以下四类:

  • R=0,M=0
  • R=0,M=1
  • R=1,M=0
  • R=1,M=1

当发生缺页中断时,NRU 算法随机地从类编号最小的非空类中挑选一个页面将它换出。

NRU 优先换出已经被修改的脏页面(R=0,M=1),而不是被频繁使用的干净页面(R=1,M=0)。

  1. 先进先出

FIFO, First In First Out

选择换出的页面是最先进入的页面。

该算法会将那些经常被访问的页面也被换出,从而使缺页率升高。

  1. 第二次机会算法

FIFO 算法可能会把经常使用的页面置换出去,为了避免这一问题,对该算法做一个简单的修改:

当页面被访问 (读或写) 时设置该页面的 R 位为 1。需要替换的时候,检查最老页面的 R 位。如果 R 位是 0,那么这个页面既老又没有被使用,可以立刻置换掉;如果是 1,就将 R 位清 0,并把该页面放到链表的尾端,修改它的装入时间使它就像刚装入的一样,然后继续从链表的头部开始搜索。

请添加链接描述

  1. 时钟

Clock

第二次机会算法需要在链表中移动页面,降低了效率。时钟算法使用环形链表将页面连接起来,再使用一个指针指向最老的页面。

请添加链接描述

标签:置换,链表,访问,算法,内存,缺页,页面
From: https://blog.51cto.com/u_14068620/5733441

相关文章

  • 算法练习C
    参考labuladong微信公众号解学武C标准库心得计算机思维的理解人总对有规律的数据处理更得心应手,同样计算机对有规律的数据处理也更加方便(计算机语言毕竟是人写的......
  • Vue.js框架:自定义组件全局挂载,避免每个用到的页面需要重复导入问题
    一、打包组件可以建立一个打包工具类,将所有的需要全局挂载的自定义组件进行打包封装,避免main.js过于杂乱。importgbInputfrom'../components/gbInput/gbInput'/......
  • 对于Servlet原理以及Mapping的五种映射和404页面的详解
    一.Servlet原理1,浏览器向web容器发送Http请求,我们这里用的web容器为tomcat。2.我们在Servlet里的protectedvoiddoGet(HttpServletRequestreq,HttpServletResponsere......
  • 十大排序算法(无代码)
    首先来介绍一些简单的概念:1.稳定:如果a原本在b的前面,且a=b,排序后a仍然在b的前面 不稳定:如果a原本在b的前面,且a=b,排序后a可能出现在b的后面 2.十大经典排序算法基......
  • Educational Codeforces Round 32 G Xor tree Boruvka算法
    求一个n个点的完全图每条边的权值为两点之间的异或值求最小生成树。在完全图上做最小生成树一般都是Boruvka算法即每次每个点都找一个离自己最近的点合并这样最多合并lo......
  • 光流算法从理论到实践专题1
    资料搜索​​光流估计-从传统方法到深度学习​​​​光流法研究笔记​​​​计算机视觉--光流法(opticalflow)简介​​​​《AnIterativeImageRegistrationTechniquew......
  • 特征提取与匹配算法的前世与今生专题1
    1、资源搜集​​【计算机视觉】2.特征点检测:Harris,SIFT,SURF,ORB​​​​传统计算机视觉中图像特征匹配方法的原理介绍(SIFT和ORB)​​​​模式识别之特征提取算法​​......
  • 光流算法从理论到实践专题3
    1、资源搜索光流法:Farneback图像分析之光流之经典光流(七)--Brox算法(DeepFlow)光流算法从理论到实践专题1光流算法从理论到实践专题2Farneback光流算法详解与calcOpticalFlow......
  • 光流算法从理论到实践专题2
    1、资料搜索​​总结:光流--LK光流--基于金字塔分层的LK光流--中值流​​​​光流算法从理论到实践专题1​​2、本人总结    我在“​​光流算法从理论到实践专题1​......
  • 排序算法
    例如12,23,8,15,33,24,77,551.选择排序即从最小数开始排序,一次排一个2.冒泡排序从最后一个数开始比前一个数小就互换,比前一个数大就判断前一个数和再前一个数,一次迭代排好一......