热门标签 | HotTags
当前位置:  开发笔记 > 后端 > 正文

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

1、基本工作原理1、基本工作原理在进程开始运行之前,不是全部装入页面,而是装入一个或者零个页面,之后根据进程运行的需要,

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


推荐阅读
  • JVM 学习总结(三)——对象存活判定算法的两种实现
    本文介绍了垃圾收集器在回收堆内存前确定对象存活的两种算法:引用计数算法和可达性分析算法。引用计数算法通过计数器判定对象是否存活,虽然简单高效,但无法解决循环引用的问题;可达性分析算法通过判断对象是否可达来确定存活对象,是主流的Java虚拟机内存管理算法。 ... [详细]
  • 一、Hadoop来历Hadoop的思想来源于Google在做搜索引擎的时候出现一个很大的问题就是这么多网页我如何才能以最快的速度来搜索到,由于这个问题Google发明 ... [详细]
  • 云原生边缘计算之KubeEdge简介及功能特点
    本文介绍了云原生边缘计算中的KubeEdge系统,该系统是一个开源系统,用于将容器化应用程序编排功能扩展到Edge的主机。它基于Kubernetes构建,并为网络应用程序提供基础架构支持。同时,KubeEdge具有离线模式、基于Kubernetes的节点、群集、应用程序和设备管理、资源优化等特点。此外,KubeEdge还支持跨平台工作,在私有、公共和混合云中都可以运行。同时,KubeEdge还提供数据管理和数据分析管道引擎的支持。最后,本文还介绍了KubeEdge系统生成证书的方法。 ... [详细]
  • 近年来,大数据成为互联网世界的新宠儿,被列入阿里巴巴、谷歌等公司的战略规划中,也在政府报告中频繁提及。据《大数据人才报告》显示,目前全国大数据人才仅46万,未来3-5年将出现高达150万的人才缺口。根据领英报告,数据剖析人才供应指数最低,且跳槽速度最快。中国商业结合会数据剖析专业委员会统计显示,未来中国基础性数据剖析人才缺口将高达1400万。目前BAT企业中,60%以上的招聘职位都是针对大数据人才的。 ... [详细]
  • 计算机存储系统的层次结构及其优势
    本文介绍了计算机存储系统的层次结构,包括高速缓存、主存储器和辅助存储器三个层次。通过分层存储数据可以提高程序的执行效率。计算机存储系统的层次结构将各种不同存储容量、存取速度和价格的存储器有机组合成整体,形成可寻址存储空间比主存储器空间大得多的存储整体。由于辅助存储器容量大、价格低,使得整体存储系统的平均价格降低。同时,高速缓存的存取速度可以和CPU的工作速度相匹配,进一步提高程序执行效率。 ... [详细]
  • 006_Redis的List数据类型
    1.List类型是一个链表结构的集合,主要功能有push,pop,获取元素等。List类型是一个双端链表的结构,我们可以通过相关操作进行集合的头部或者尾部添加删除元素,List的设 ... [详细]
  • Android工程师面试准备及设计模式使用场景
    本文介绍了Android工程师面试准备的经验,包括面试流程和重点准备内容。同时,还介绍了建造者模式的使用场景,以及在Android开发中的具体应用。 ... [详细]
  • 本文介绍了操作系统的定义和功能,包括操作系统的本质、用户界面以及系统调用的分类。同时还介绍了进程和线程的区别,包括进程和线程的定义和作用。 ... [详细]
  • 本文讨论了读书的目的以及学习算法的重要性,并介绍了两个算法:除法速算和约瑟夫环的数学算法。同时,通过具体的例子和推理,解释了为什么x=x+k序列中的第一个人的位置为k,以及序列2和序列3的关系。通过学习算法,可以提高思维能力和解决问题的能力。 ... [详细]
  • STL迭代器的种类及其功能介绍
    本文介绍了标准模板库(STL)定义的五种迭代器的种类和功能。通过图表展示了这几种迭代器之间的关系,并详细描述了各个迭代器的功能和使用方法。其中,输入迭代器用于从容器中读取元素,输出迭代器用于向容器中写入元素,正向迭代器是输入迭代器和输出迭代器的组合。本文的目的是帮助读者更好地理解STL迭代器的使用方法和特点。 ... [详细]
  • 深入解析Linux下的I/O多路转接epoll技术
    本文深入解析了Linux下的I/O多路转接epoll技术,介绍了select和poll函数的问题,以及epoll函数的设计和优点。同时讲解了epoll函数的使用方法,包括epoll_create和epoll_ctl两个系统调用。 ... [详细]
  • 本文讨论了同事工资打听的话题,包括同工不同酬现象、打探工资的途径、为什么打听别人的工资、职业的本质、商业价值与工资的关系,以及如何面对同事工资比自己高的情况和凸显自己的商业价值。故事中的阿巧发现同事的工资比自己高后感到不满,通过与老公、闺蜜交流和搜索相关关键词来寻求解决办法。 ... [详细]
  • 本文分享了一个关于在C#中使用异步代码的问题,作者在控制台中运行时代码正常工作,但在Windows窗体中却无法正常工作。作者尝试搜索局域网上的主机,但在窗体中计数器没有减少。文章提供了相关的代码和解决思路。 ... [详细]
  • 如何配置小米wifi放大器来增强家庭无线路由器信号?
    本文介绍了如何通过配置小米wifi放大器来增强家庭无线路由器信号的方法。通过打开米家APP,选择设备添加,搜索并选择需要添加的wifi放大器,根据系统提示进行下一步操作即可完成配置。配置完成后,家庭无线路由器信号将得到增强。 ... [详细]
  • 模块化区块链生态系统的优势概述及其应用案例
    本文介绍了相较于单体区块链,模块化区块链生态系统的优势,并以Celestia、Dymension和Fuel等模块化区块链项目为例,探讨了它们解决可扩展性和部署问题的方案。模块化区块链架构提高了区块链的可扩展性和吞吐量,并提供了跨链互操作性和主权可扩展性。开发人员可以根据需要选择执行环境,并获得奖学金支持。该文对模块化区块链的应用案例进行了介绍,展示了其在区块链领域的潜力和前景。 ... [详细]
author-avatar
加肥的猫miao_115
这个家伙很懒,什么也没留下!
PHP1.CN | 中国最专业的PHP中文社区 | DevBox开发工具箱 | json解析格式化 |PHP资讯 | PHP教程 | 数据库技术 | 服务器技术 | 前端开发技术 | PHP框架 | 开发工具 | 在线工具
Copyright © 1998 - 2020 PHP1.CN. All Rights Reserved | 京公网安备 11010802041100号 | 京ICP备19059560号-4 | PHP1.CN 第一PHP社区 版权所有