【操作系统】抖动、缺页中断率、页面置换算法

这篇具有很好参考价值的文章主要介绍了【操作系统】抖动、缺页中断率、页面置换算法。希望对大家有所帮助。如果存在错误或未考虑完全的地方,请大家不吝赐教,您也可以点击"举报违法"按钮提交疑问。


缺页中断率

对于进程P的一个长度为A的页面访问序列,如果进程P在运行中发生缺页中断的次数为F,则f = F/A称为缺页中断率。

影响缺页中断率的因素

1、进程分得的主存页框数:页框数多则缺页中断率低,页框数少则缺页中断率高。
2、页面大小:页面大则缺页中断率低,页面小则缺页中断率高。
3、页面替换算法的优劣决定缺页率。
4、程序特性:程序局部性好,则缺页中断率低;否则缺页中断率高。

抖动(颠簸)

在请求分页虚拟存储管理系统中,刚被淘汰的页面立即又要访问,而调入不久即被淘汰,淘汰不久再被调入,如此反复,使得系统的页面调度非常频繁,以致大部分时间消耗在页面调度上,而不是执行计算任务,这种现象称为“抖动”(或者“颠簸”)。

页面置换算法

缺页中断次数怎么算,操作系统原理,linux

1、最佳页面淘汰算法(OPT)

调入一页而必须淘汰一个旧页时,所淘汰的页是以后不再访问的页或距现在最长时间后再访问的页。
OPT可用于衡量各种具体算法的标准。

例:
某程序在内存中分配三个页框,初始为空,页面走向为4,3,2,1,4,3,5,4,3,2,1,5。用最佳页面淘汰算法分析页面置换过程。
缺页中断次数怎么算,操作系统原理,linux
缺页中断率=7/12=58.3%

最佳置换算法可以保证最低的缺页率,但实际上,只有在进程执行的过程中才能知道接下来会访问到的是哪个页面。操作系统无法提前预判页面访问序列。因此,最佳置换算法是无法实现的。

2、先进先出页面淘汰算法(FIFO)

先进先出页面淘汰算法总是淘汰最先调入主存的那一页,或者说在主存中驻留时间最长的那一页(常驻的除外)。

例:
某程序在内存中分配三个页框,初始为空,页面走向为4,3,2,1,4,3,5,4,3,2,1,5。用先进先出页面淘汰算法分析页面置换过程。
缺页中断次数怎么算,操作系统原理,linux
缺页中断率=9/12=75%
缺页中断次数怎么算,操作系统原理,linux
缺页中断率=10/12=83.33%

Belady异常——当为进程分配的物理块数增大时,缺页次数不减反增的异常现象。

只有FIFO算法会产生Belady异常。另外,FIFO算法虽然实现简单,但是该算法与进程实际运行时的规律不适应,因为先进入的页面也有可能最经常被访问。因此,算法性能差。

页缓冲技术:
FIFO替换算法的一种改进,策略如下: 淘汰了的页面进入两个队列——修改页面和非修改页面队列
修改页面队列中的页不时地成批写出并加入到非修改页面队列;
非修改页面队列中的页面被再次引用时回收,或者淘汰掉以作替换。

3、最近最久未使用页面淘汰算法(LRU)

淘汰的页面是在最近一段时间里较久未被访问的那一页。

例:
某程序在内存中分配三个页框,初始为空,页面走向为4,3,2,1,4,3,5,4,3,2,1,5。用最近最久未使用页面淘汰算法分析页面置换过程。
缺页中断次数怎么算,操作系统原理,linux
缺页中断率=10/12=83.3%

1、最佳置换算法性能最好,但无法实现;
2、先进先出置换算法实现简单,但算法性能差;
3、最近最久未使用置换算法性能好,是最接近OPT算法性能的,但是实现起来需要专门的硬件支持,算法开销大。

4、时钟置换算法(CLOCK)

时钟置换算法是一种性能和开销较均衡的算法,又称CLOCK算法,或最近未用算法(NRU,Not Recently Used)

简单的时钟置换算法

简单的CLOCK算法实现方法:
① 为每个页面设置一个访问位,再将内存中的页面都通过链接指针链接成一个循环队列。
② 当某页被访问时,其访问位置为1。
③ 当需要淘汰一个页面时,只需检查页的访问位。
如果是0,就选择该页换出;
如果是1,则将它置为0,暂不换出,继续检查下一个页面;
若第一轮扫描中所有页面都是1,则将这些页面的访问位依次置为0后,再进行第二轮扫描(第二轮扫描中一定会有访问位为0的页面,因此简单的CLOCK算法选择一个淘汰页面最多会经过两轮扫描)。

访问位为1,表示最近访问过;
访问位为0,表示最近没访问过。

例:假设系统为某进程分配了五个内存块,并考虑到有以下页面号引用串:1,3,4,2,5,6,3,4,7

步骤:
① 将内存中的页面都通过链接指针链接成一个循环队列;
② 此时所有页访问位都是1,从队首开始扫描,经过第一轮扫描,访问位全部置为0;
③ 1号页访问位为0,淘汰1号页面,6号页装入1号页的内存块中,扫描下一个页面;
④ 扫描到3号页,访问3号页和4号页,命中页面访问位都置为1,扫描指针不变还在上一次置换页面的下一个页面3号页;
⑤ 继续从3号位开始扫描,访问位置为0,到2号页的访问位为0,淘汰2号页面,7号页装入2号页的内存块中,扫描下一个页面。

缺页中断次数怎么算,操作系统原理,linux
每次发生缺页中断,扫描的位置是从上一次置换页面的下一个页面开始扫描。

简单的时钟置换算法仅考虑到一个页面最近是否被访问过。事实上,如果被淘汰的页面没有被修改过,就不需要执行I/0操作写回外存。只有被淘汰的页面被修改过时,才需要写回外存。

改进的时钟置换算法

改进型的时钟置换算法的思想:
除了考虑一个页面最近有没有被访问过之外,操作系统还应考虑页面有没有被修改过。在其他条件都相同时,应优先淘汰没有修改过的页面,避免I/0操作。

修改位=0,表示页面没有被修改过;
修改位=1,表示页面被修改过。

为方便讨论,用(访问位,修改位)的形式表示各页面状态。如(1, 1)表示一个页面近期被访问过,且被修改过。

算法规则:
将所有可能被置换的页面排成一个循环队列
第一轮:从当前位置开始扫描到第一个(0,0)的帧用于替换,本轮扫描不修改任何标志位;
第二轮:若第一轮扫描失败,则重新扫描,查找第一个(0,1)的帧用于替换,本轮将所有扫描过的帧访问位设为0;
第三轮:若第二轮扫描失败,则重新扫描,查找第一个(0,0) 的帧用于替换,本轮扫描不修改任何标志位;
第四轮:若第三轮扫描失败,则重新扫描,查找第一个(0,1) 的帧用于替换。
由于第二轮已将所有帧的访问位设为0,因此经过第三轮、第四轮扫描一定会有一个帧被选中,因此改进型CLOCK置换算法选择一个淘汰页面最多会进行四轮扫描。

第一优先级:最近没访问,且没修改的页面;
第二优先级:最近没访问,但修改过的页面;
第三优先级:最近访问过,但没修改的页面;
第四优先级:最近访问过,且修改过的页面。

例:
缺页中断次数怎么算,操作系统原理,linux文章来源地址https://www.toymoban.com/news/detail-809104.html


到了这里,关于【操作系统】抖动、缺页中断率、页面置换算法的文章就介绍完了。如果您还想了解更多内容,请在右上角搜索TOY模板网以前的文章或继续浏览下面的相关文章,希望大家以后多多支持TOY模板网!

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处: 如若内容造成侵权/违法违规/事实不符,请点击违法举报进行投诉反馈,一经查实,立即删除!

领支付宝红包 赞助服务器费用

相关文章

  • 虚拟内存页面置换算法(操作系统)

    通过这次实验,加深对虚拟内存页面置换概念的理解,进一步掌握先进先出FIFO、最佳置换OPI和最近最久未使用LRU页面置换算法的实现方法。 问题描述: 设计程序模拟先进先出FIFO、最佳置换OPI和最近最久未使用LRU页面置换算法的工作过程。假设内存中分配给每个进程的最小物

    2024年02月04日
    浏览(16)
  • 计算机操作系统——页面置换算法

    声明 :本篇博客参考书籍《计算机操作系统》(西安电子科技大学出版社) 首先说说影响页面换进换出的效率的几个因素: (1)页面置换算法。该因素是影响页面换进换出效率的重要因素。一个好的页面置换算法可以使进程在运行过程中具有较低的缺页率,从而减少页面换

    2024年02月07日
    浏览(23)
  • 操作系统常见的十种页面置换算法

    OS常见页面置换算法整理 在地址映射过程中,若在页面中发现所要访问的页面不在内存中,则产生缺页中断。当发生缺页中断时,如果操作系统内存中没有空闲页面,则操作系统必须在内存选择一个页面将其移出内存,以便为即将调入的页面让出空间。而用来选择淘汰哪一页

    2024年02月02日
    浏览(23)
  • 计算机操作系统实验:页面置换算法的实现

    本实验的目的是通过编程模拟不同的页面置换算法,比较它们的缺页率和命中率,加深对操作系统内存管理的理解。本实验采用C语言编写,实现了最佳置换算法(OPT)、先进先出置换算法(FIFO)和最近最久未使用算法(LRU)。实验中,页面号引用串从文本文件中读取,输出

    2024年02月02日
    浏览(14)
  • 【操作系统】虚拟内存相关&分段分页&页面置换算法

    【进程地址空间=虚拟地址空间=C/C++程序地址空间就是那个4G的空间】 虚拟内存是操作系统内核为了对进程地址空间进行管理,而设计的一个逻辑意义上的内存空间概念。在程序运行过程中,虚拟内存中需要被访问的部分会被映射到物理内存空间中, CPU 通过将虚拟地址翻译成

    2024年02月12日
    浏览(10)
  • 操作系统实验:页面置换算法——FIFO、LRU 代码实现

            最简单的页面置换算法是FIFO。 在分配内存页面数( AP )小于进程页面数( PP )时,最先运行的 AP个页面放入内存;当内存分配页面被占满时,如果 又需要处理新的页面,则将原来放的内存中的AP个页中 最先进入 的调出(FIFO),再将新页面放入;所使用的内存

    2024年02月08日
    浏览(9)
  • 页面置换算法模拟实现-操作系统课程设计基于Java

    存储管理的主要功能之一是合理的分配空间,请求页式存储管理是一种常用的虚拟存储管理技术。在地址映射过程中,若在页表中发现所要访问的页面不在内存,则产生中断,当发生中断时,系统必须在内存选择一个页面移出内存,调用页面置换算法,以便为调入新的页面让

    2024年02月07日
    浏览(13)
  • 【操作系统】FIFO先进先出页面置换算法(C语言实现)

    FIFO页面置换算法,计算缺页率,文末附代码,及例题解析 1、内容         在地址映射过程中,若在页面中发现所要访问的页面不在内存中,则产生缺页中断。当发生缺页中断时,如果操作系统内存中没有空闲页面,则操作系统必须在内存选择一个页面将其移出内存,以便为

    2024年02月11日
    浏览(8)
  • 【操作系统笔记04】操作系统之内存管理方式(分页、分段、段页式)、虚拟存储技术、页面置换算法

    这篇文章,主要介绍操作系统之内存管理方式(分页、分段、段页式)、虚拟存储技术、页面置换算法。 目录 一、操作系统 1.1、基地址变换机构 1.2、具有快表的地址变换机构

    2023年04月21日
    浏览(15)
  • 操作系统-请求页式存储管理中常用页面置换算法模拟

    (1)先进先出调度算法(FIFO) 先进先出调度算法根据页面进入内存的时间先后选择淘汰页面,先进入内存的页面先淘汰,后进入内存的后淘汰。本算法实现时需要将页面按进入内存的时间先后组成一个队列,每次调度队首页面予以淘汰。 (2)最近最少调度算法(LRU) 先进

    2024年02月06日
    浏览(16)

觉得文章有用就打赏一下文章作者

支付宝扫一扫打赏

博客赞助

微信扫一扫打赏

请作者喝杯咖啡吧~博客赞助

支付宝扫一扫领取红包,优惠每天领

二维码1

领取红包

二维码2

领红包