操作系统:虚拟页式存储管理(缺页中断、页面置换算法)

1、基本工作原理

1、基本工作原理
在进程开始运行之前,不是全部装入页面,而是装入一个或者零个页面,之后根据进程运行的需要,动态装入其他页面;当内存已满,而又需要装入
新的页面时,则根据某种算法淘汰某个页面,以便装入新的页面。在使用虚拟页式存储管理时需要在页表中增加一些内容:
页号、驻留位(中断位)、内存块号、外存地址、访问号、修改位驻留位:表示该页在外存还是内存;
访问位:表示该页在内存期间是否被访问过,又称R位;
修改位:表示该页在内存中是否被修改过,又称M位;

缺页中断处理

2、缺页中断
在地址映射过程中,若在页表中发现所要访问的页面不在内存,则产生中断,当发生中断时,系统必须在内存选择一个页面移出内存,
以便为调入新的页面让出空间,尽管每次可以随机选选择一个页面置换,但选择不常使用的页面会是系统性能好的多,减少不必要的额外
开销,就产生了页面置换算法。3、页面置换算法:
3.1理想页面(Optimal, OPT)置换算法
发生缺页时,有些页面在内存中,其中有一页将很快被访问(包含紧接着 的下一条指令的那页),而其他页则可能到10、
100或1000条指令后才会被访问,每个页都可以用在该页面首次被访问前所要执行的指令数进行标记。标记树最大的页应该被置换。举例:如果某页在八百万条指令内不会被使用,另外一页在六百万条指令不会被使用,则置换前一个页面。这个算法无法实现,因当缺页
中断时,系统无法知道各个页面下一次在什么时候被访问3.2先进先出置换算法(First In First Out, FIFO)
置换最先调入内存的页面,即置换在内存中驻留时间最久的页面。按照进入内存的先后次序排列成队列,从队尾进入,从队首删除。但是
该算法会淘汰经常访问的页面,不适应进程实际运行的规律,目前已经很少使用。3.3最近最久未使用置换算法(Least Recently Used, LRU)
刚被访问的页面,可能马上又要被访问;而较长时间内没有被访问的页面,可能最近不会被访问。 LRU算法普偏地适用于各种类型的程
序,但是系统要时时刻刻对各页的访问历史情况加以记录和更新,开销太大,因此LRU算法必须要有硬件的支持。3.4第二次机会页面置换算法
FIFO算法可能会把经常使用的页面置换出去,为了避免这一问题,对该算法进行简单的修改:检查最老页面的R位,如果R位是0,那么
这个页面又老有没用,可以立即置换出去,如果是1,就清零R位,并将该页放到链表的尾端,修改它的装入时间使它就像装入的一样,
然后继续搜索。如果所有的页面都被访问过,那么该算法就被降为纯粹的FIFO算法。3.5时钟页面置换算法
由于第二次机会页面置换算法要经常在链表中移动页面,降低了效率。一个更好的办法,将所有的页面存在一个类似钟表面的环形链
表中。3.6最近未使用(NRU:Not Recently Used)
用R位和M位构造一个简单的页面置换算法:当启动一个进程时,它的所有页的两个位都由操作系统设置成0,R位被定期的清零,以
区别最近没有被访问的页和被访问了的页。 
根据R位和M位,分为4类页面 
第0类:没有被访问,没有被修改 
第1类,没有被访问,被修改 
第2类,被访问,没有被修改 
第3类,被访问,被修改。
NRU算法随机地从编号最小的非空类中挑选一个页淘汰之。这个算法隐含的意思是,淘汰一个在最近一个时钟周期内没有被访问
的已修改页要比淘汰一个被频繁访问的干净的页好。4、Belady异常现象
从直觉上看,在内存中的物理页面数越多,程序的缺页次数应该越少,但是实际情况并不是这样。Belady在1969年发现一个反例,
使用FIFO算法时,四个页框时缺页次数比三个页框时多。这种奇怪的情况称为Belady异常现象。5、影响缺页次数的因素
1)分配给程序的物理页面数
2)页面的大小
3)程序的编制方法
4)页面置换算法

2、计算缺页次数

理想页面(Optimal, OPT)置换算法

理想页面

先进先出置换算法(First In First Out, FIFO)

FIFO

 最近最久未使用置换算法(Least Recently Used, LRU)

LRU

在一个请求页式存储管理中,一个程序的页面走向为3,4,2,1,4,5,4,3,5,1,2,并采用LRU算法。设分配给该程序的存储块
数 S 分别为3 和 4,在该访问中发生的缺页次数 F 

LRU

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

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

相关文章

小程序 长按api_高质量的微信小程序样式模板应该长什么样?

现在不懂技术的小白若想快速制作自己的小程序,一般是通过小程序模板来实现。通过在模板上添加自己的图片、文字、商品等等,可以很简单地生成一个小程序。不过要想把小程序做得好看,你得找高质量的小程序样式模板才行。那么高质量的微信小程序…

(笔记)Mysql命令drop database:删除数据库

drop命令用于删除数据库。drop命令格式&#xff1a;drop database <数据库名>;例如&#xff0c;删除名为 xhkdb的数据库&#xff1a;mysql> drop database xhkdb;[例子1] 删除一个已经确定存在的数据库&#xff1a; mysql> drop database drop_database; Query…

web安全测试-AppScan使用分享

这里主要分享如何使用AppScan对一大项目的部分功能进行安全扫描。 ------------------------------------------------------------------------ 其实&#xff0c;对于安全方面的测试知道的甚少。因为那公司每个月要求对产品进行安全扫描。掌握了一人点使用技巧&#xff0c;所…

面试题:找两个有序数组所有数第K小的数

给定两个有序数组arr1和arr2&#xff0c;再给定一个整数k,返回两个数组中所有数中第k小的数。要求&#xff1a;如果arr1的长度为N&#xff0c;arr2的长度为M&#xff0c;时间复杂度请达到O(log(min{M, N}) ) 例如&#xff1a; arr1 {1,2,3,4,5} arr2 {3,4,5} k 1; 因为1为所…

ros 开源物体检测_ROS kinetic + Realsens D435i + ORK + LINEMOD 物体识别

1. ORKORK (Object Recognition Kitchen) 是 ROS 集成的物体识别库&#xff0c;当前 Kinetic 版本的 ROS 只集成了部分功能包的二进制安装文件&#xff0c;所以需通过源码编译安装。安装依赖库sudo apt-get installmeshlabsudo apt-get install libosmesa6-devsudo apt-get ins…

雪碧图sprity 合并多图使用心得

介绍 sprity 是一个模块化的雪碧图生成工具会根据目录中的图片生成相应的雪碧图和样式文件&#xff0c;支持retina图&#xff0c;可以内嵌base64 编码格式的图&#xff0c;支持不同的图片格式和有不同的图片引擎可以选择。sprity 的前身是css-sprite,sprity的 git地址 sprity的…

团队项目第二次冲刺(4)

已经做到两个界面的链接。 今天对用到的数据进行定义及对程序进行完善。 遇到的问题&#xff1a;在进行页面之间的连接时用到的intent语句运用不好。出现了很多次的bug。转载于:https://www.cnblogs.com/cuipengbo/p/4586519.html

itil v4和v3的区别_ITIL从v3到v4 - 这是新的ITIL

ITIL 4即将发布(原计划2019年1月到3月)&#xff0c;v4的领域要大得多&#xff0c;重点放在业务和技术领域&#xff0c;比如我们要如何运作&#xff0c;以及如何通过敏捷&#xff0c;DevOps和数字化转型在未来发挥作用?十年前&#xff0c;比特币推出&#xff0c;詹姆斯卡梅隆发…

面试题:根据Unix时间戳计算时间

根据Unix时间戳计算时间&#xff0c;不分年月大小&#xff0c;每月三十天&#xff0c;每年按360天计算。开始时间1970/01/01 00:00:00,输入秒数&#xff0c;显示时间 思路一&#xff1a;进位&#xff0c;60秒进1分钟&#xff0c;60分进1小时&#xff0c;24小时进1天&#xff0…

华为荣耀6 H60-L02/L12(联通版)救砖包【适用于无限重启】

本帖最后由 HOT米粒 于 2014-11-16 20:43 编辑 华为荣耀6 H60-L02/L12&#xff08;联通版&#xff09;救砖包【适用于无限重启】说明&#xff1a; 1、本工具包用于华为荣耀6 H60-L02&#xff08;联通版&#xff09;&#xff1b; 2、本工具适用于在Honor Logo 无限重启的童鞋恢复…

linux常用命令技巧--更新中

cp –a ojects objects.ori 复制备份目录cp –r 123 123 如果含有子目录一并复制 cp –p 保留文件属性转载于:https://blog.51cto.com/beautifual/1733232

找出无序数组最小的K个数(基于快排,效率高)

快排&#xff1a; void QuickSort(int array[], int low, int high) { if (low > high) //为了防止无限递归下去&#xff0c;导致栈溢出&#xff0c;设置此条件 { return; } int pivotkey array[low]; //设置一个对照元素&#xff0c;把这个元素先暂时拿出来&…

php mysql 存储过程_php调用MySQL存储过程方法

php与mysql是天生的一对,下面我来介绍在php中怎么调用mysql存储过程并执行返回结果,下面我总结了一些常用的php调用MySQL存储过程的方法,有需要了解的同学可参考.MySQL从5.0开始才引入存储过程,反正以前做应用的时候从没碰过,不过现在因为主要作内部系统&#xff0c;所以很多应…

Mysql存储引擎中InnoDB与Myisam的区别

为什么80%的码农都做不了架构师&#xff1f;>>> 1. 事务处理 innodb 支持事务功能&#xff0c;myisam 不支持。 Myisam 的执行速度更快&#xff0c;性能更好。 2. select ,update ,insert ,delete 操作 MyISAM&#xff1a;如果执行大量的SELECT&#xff0c;MyISA…

Android AsyncTask 详解

在Android中实现异步任务机制有两种方式&#xff0c;Handler和AsyncTask。 Handler模式需要为每一个任务创建一个新的线程&#xff0c;任务完成后通过Handler实例向UI线程发送消息&#xff0c;完成界面的更新&#xff0c;这种方式对于整个过程的控制比较精细&#xff0c;但也是…

mysql的rows大小超过8126_mysql大字段(Row size too large8126)

使用mysql并写入数据时发生错误&#xff1a;Row size too large (> 8126).Changing some columns to TEXT or BLOB or using ROW_FORMATDYNAMIC or ROW_FORMATCOMPRESSED may help. In current row format,BLOB prefix of 768 bytes is stored inline.因为表中有多个text字段…

一步步学习javascript基础篇(8):细说事件

终于学到事件了&#xff0c;不知道为何听到“事件”就有一种莫名的兴奋。可能是之前的那些知识点过于枯燥无味吧&#xff0c;说起事件感觉顿时高大上了。今天我们就来好好分析下这个高大上的东西。 可以说&#xff0c;如果没有事件我们的页面就只能阅读了。有了事件&#xff0c…

剑指offer:二叉树中和为某一值的路径

题目描述&#xff1a;输入一颗二叉树和一个整数&#xff0c;打印出二叉树中结点值的和为输入整数的所有路径。路径定义为从树的根结点开始往下一直到叶结点所经过的结点形成一条路径。 分析&#xff1a;路径定义为从树的根结点开始往下一直到叶结点所经过的结点形成一条路径。…

android mysql 数据库文件_android mysql数据库文件

{"moduleinfo":{"card_count":[{"count_phone":1,"count":1}],"search_count":[{"count_phone":4,"count":4}]},"card":[{"des":"阿里云数据库专家保驾护航&#xff0c;为用户…

js常用DOM操作

在博客园看到了苏夏写的常用DOM整理文章&#xff0c;地址&#xff1a;http://www.cnblogs.com/cabbagen/p/4579412.html&#xff0c;然后抽时间都试了一下这些常用的DOM操作。在这里记录一下。 1 <!DOCTYPE html>2 <html lang"en">3 <head>4 &…