缺页中断与页面置换理论

 分类:操作系统--内存管理和优化

缺页中断:

缺页中断就是要访问的页不在主存,需要操作系统将其调入主存后再进行访问,在这个时候,被内存映射的文件实际上成了一个分页交换文件。

缺页失:

又名硬错误、硬中断、分页错误、寻页缺失、缺页中断、页故障
指的是当软件试图访问已映射在虚拟地址空间中,但是并未被加载在物理内存中的一个分页时,由中央处理器的内存管理单元所发出的中断。通常情况下,用于处理此中断的程序是操作系统的一部分。如果操作系统判断此次访问是有效的,那么操作系统会尝试将相关的分页从硬盘上的虚拟内存文件中调入内存。而如果访问是不被允许的,那么操作系统通常会结束相关的进程。虽然其名为“页缺失”错误,但实际上这并不一定是一种错误。而且这一机制对于利用虚拟内存来增加程序可用内存空间的操作系统中都是常见且有必要的。微软在较新版Windows的资源监视器中使用“硬错误”、“硬中断”这一术语来指代“页缺失”。

中断:

是指计算机在执行程序的过程中,当出现异常情况或特殊请求时,计算机停止现行程序的运行,转向对这些异常情况或特殊请求的处理,处理结束后再返回现行程序的间断处,继续执行原程序。

缺页中断的次数:

中断的次数 = 进程中的物理块 - 页面置换次数

页面置换算法:

页式虚拟存储器实现的一个难点是设计页面调度(置换)算法,即将新页面调入内存时,如果内存中所有的物理页都已经分配出去,就要按某种策略来废弃某个页面,将其所占据的物理页释放出来,好的算法,让缺页率降低。常见的有先进先出调度算法(FIFO,First In First Out),最近最少调度算法(LFU,根据时间判断),最近最不常用调度算法(LRU,Least Recently Used,根据使用频率判断),最佳置换算法(OPT ),时钟页面置换算法

页面置换与缺页次数,缺页率的计算:

1. 先进先出调度算法(FIFO):

  • 选择在内存中驻留时间最长的页面并淘汰它。

  • OS维护一个链表,记录了所有页面位于内存当中的逻辑页面,从链表的排列顺序来看,链首页面的驻留时间最长,页尾页面的驻留时间最短,当发生一个缺页中断时,把链首页面淘汰出去,并把新的页面添加到链表的末尾。

  • 例如某请求分页式存储管理系统,接收一个共10页的作业。作业运行时的页面走向如下:1,5,2,1,3,2,4,7,2,4 假定系统为改作业分配了3块内存空间,内存页块初始均为空。

  • 三个物理块先后加载的数据如下图所示:

  • 进程运行时,先将1,5,2依次装入内存之中(初次加载也会激发缺页中断),进程访问页面1时,会发现最早进入队列中,有当前访问的页面,所以可以空出来(图中照抄上一队列),然后访问页面3,再把之前队列中【1,5,2】最早进入内存中的1换出,然后依次将当前访问的页面与之前队列中的页面进行置换。

  • FIFO算法还会产生当所分配的物理块数增大而页故障数不减反增的异常现象。

http://www.cnblogs.com/zhangbaochong/p/5827167.html

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

  • 当一个缺页中断发生时,选择最久未使用的那个页面,并淘汰它。
  • 此算法是最优页面置换算的一个近似,其依据是程序的局部性原理,即在最近一小段时间内,如果某些页面被频繁的访问,那么在将来的一段时间内,它们还可能会再次被频繁的访问;反之,如果在过去某些页面长时间未被访问,那么在将来他们还可能会长时间得不到访问。
  • 基于上面例题,利用LRU算法进行页面置换:
  • 进程运行时,先将1,5,2依次装入内存之中(初次加载也会激发缺页中断),进程第一次对页面1访问时,未有最近最久未被访问的页面。然后访问页面3时,将最近最久未使用的页面5换出,依次访问页面与堆栈进行置换。

3. 最佳置换算法(OPT):

  • 当一个缺页中断发生时,对于保存在内存中的每一个逻辑页面,计算在它的下一次访问之前,还需要等待多长时间,从中选择时间最长的那个,作为被置换的页面。
  • 这是一种理想的页面置换算法,在实际系统中是无法实现的,因为操作系统无从知道每一个页面要等待多长时间以后才会被访问。
  • 可以作为其它算法性能评价的依据。

4. 时钟页面置换算法:

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

5. 最不经常用算法(LFU):

  • 当缺页中断发生时,选择访问次数最少的那个页面,并淘汰之。

参考:

https://blog.csdn.net/FX677588/article/details/77915583
https://zhuanlan.zhihu.com/p/113699454

缺页中断与页面置换理论相关推荐

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

    1.基本工作原理 1.基本工作原理 在进程开始运行之前,不是全部装入页面,而是装入一个或者零个页面,之后根据进程运行的需要,动态装入其他页面:当内存已满,而又需要装入 新的页面时,则根据某种算法淘汰某 ...

  2. 缺页中断与页面置换算法

    目录 缺页中断 页面置换算法: LRU算法 缺页中断   缺页:如果进程被调度,该进程需要使用的外存页(数据)不存在于数据块中,这个现象就叫做缺页.如果这个数据此时不在,就会将这个数据从加入到数据块首 ...

  3. 缺页中断及页面置换算法

    缺页中断 在请求分页系统中,可以通过查询页表中的状态位来确定所要访问的页面是否存在于内存中.每当所要访问的页面不在内存时,会产生一次缺页中断,此时操作系统会根据页表中的外存地址在外存中找到所缺的一页, ...

  4. 存储管理的页面置换算法

    存储管理的页面置换算法 存储管理的页面置换算法在考试中常常会考到,操作系统教材中主要介绍了3种常用的页面置换算法,分别是:先进先出法(FIFO).最佳置换法(OPT)和最近最少使用置换法(LRU).大 ...

  5. 操作系统之内存管理:5、虚拟存储技术(请求分页管理、页面置换算法、虚拟内存、地址变换)

    4.虚拟存储技术 虚拟内存 思维导图 传统存储管理方式的缺点 局部性原理 什么是虚拟内存?(功能) 虚拟内存主要特征 如何实现虚拟存储技术 虚拟内存实现1------请求分页管理方式 思维导图 请求分 ...

  6. 最近最久未使用页面置换算法

    在一个请求分页系统中,采用最近最久未使用页面置换算法时,假如一个作业的页面走向为4.3.2.1.4.3.5.4.3.2.1.5,当分配给该作业的物理块数M分别为3和4时,试计算在访问过程中所发生的缺页 ...

  7. 虚拟页式存储管理——页面置换算法及其影响的缺页中断率

    页面置换算法 先进先出置换算法(FIFO) 该算法淘汰最早进入主存的页面.最早进入的页面,不再使用的可能性比最近调入的页面要大. 特点:实现简单.只要把各调入主存的页按其进入主存的先后顺序练成一个队列 ...

  8. 【学习笔记】第三章——内存 IV(虚拟内存、请求分页、页面置换、缺页中断、抖动现象)

    文章目录 一. 虚拟内存 1)传统存储管理方式的特征.缺点 2)虚拟内存的定义和特征 3)如何实现虚拟内存 -- 请求分页存储管理 二. 缺页中断 1)缺页中断机构 2)请求分页的地址变换机构 三. ...

  9. 分页及其管理、页面置换算法

    1.分页 大部分虚拟内存系统中都使用一种称为分页的技术. 在任何一台计算机上,程序引用了一组内存地址,由程序产生的这些地址称为虚拟地址,他们构成了一个虚拟地址空间. 在没有虚拟内存的计算机上,系统直接 ...

最新文章

  1. 几种民间排毒养颜祛痘DIY自制面膜 - 健康程序员,至尚生活!
  2. 编写一个算法frequency,统计在一个输入字符串中各个不同字符出现的频度。用适当的测试数据来验证这个算法。
  3. 网站负责人委托书_关于网站负责人授权委托书的阿里云网站内容
  4. 深度优先搜索知识总结
  5. 两边填上相同的数_二年级必考题,在括号里填上相同的数~
  6. 【vue】---vue中使用async+await出现的问题及解决方案
  7. 2.C++深入理解 面向对象部分1
  8. Linux下PHP开发环境搭建(Apache2.4+PHP7.1+MySQL8.0)
  9. 移动硬盘上安装Windows 10系统
  10. HTML5官方文档学习笔记(四)----新的语义元素
  11. Java快速入门到精通—大数字运算(BigDecimal 类)
  12. ssm水果商城项目遇到的问题和解决
  13. C++ MFC学习笔记(第三课)绘制统计直方图
  14. Java公式编辑器开发思路,附项目源码
  15. VPP-引流到自己节点的方法
  16. Python数据分析【第11天】| DataFrame转化格式并保存(to_excel(),to_json(),to_csv())
  17. flutter 自定义圆形进度条
  18. JAVA应用中集成SF的chatter功能及开发步骤
  19. ZigBee的发展也有“碎片化”
  20. 搭建ARM DS-5 STREAMLINE

热门文章

  1. win10系统磁盘如何格式化
  2. 请你使用html5编写一个关于黄柳瑜的网站,内容要包括炫彩动画和相关按钮,比如联系作者之类的...
  3. python 大小端数据转换
  4. 从底层结构开始学习FPGA(16)----PLL/MMCM IP的定制与测试
  5. 计算机技术交流分享,[计算机]计算机科学与技术学院组织考研经验交流分享会...
  6. 【程序员面试金典】01.01. 判断字符是否唯一
  7. tomcat一键启停shell脚本
  8. “武汉市科技小巨人”,我们入选了
  9. 比以往来得更猛烈的免费WiFi
  10. matlab vc 2005,MATLABmex不能出现vc++ 2005 compilers的处理