页面置换算法详解专题

news/2024/7/5 6:40:30

页面置换算法的功能是:当缺页中断发生,需要调入新的页面而内存已满时,选择内存当中哪个物理页面被置换~

页面置换算法的目的:尽可能地减少页面的换进换出次数(既缺页中断的次数)。具体来说,把未来不再使用的或短期内较少使用的页面换出,通常只能在局部性原理指导下依据过去的统计数据来进行预测。


目录

一.最佳置换算法(OPT)

二.先进先出页面置换算法(FIFO)

三.最近最久未使用置换算法(LRU)

四.时钟置换算法(clock)

五.改进型的时钟置换


        页缺失(英语:Page fault,又名硬错误、硬中断、分页错误、寻页缺失、缺页中断、页故障等)指的是当软件试图访问已映射在虚拟地址空间中,但是并未被加载在物理内存中的一个分页时,由中央处理器的内存管理单元所发出的中断。

        简单来说,缺页指的就是每次访问的页面不在内存之中~

一.最佳置换算法(OPT)

        选择的被淘汰页是以后永远不使用的页面,或者是在最长时间内不再被访问的页面,以保证获得最低的缺页率~这是一种理想情况下的页面置换算法,但实际上是不可能实现的。该算法的基本思想是:发生缺页时,有些页面在内存中,其中有一页将很快被访问(也包含紧接着的下一条指令的那页),而其他页面则可能要到10、100或者1000条指令后才会被访问,每个页面都可 [1]以用在该页面首次被访问前所要执行的指令数进行标记。最佳页面置换算法只是简单地规定:标记最大的页应该被置换。这个算法唯一的一个问题就是它无法实现。当缺页发生时,操作系统无法知道各个页面下一次是在什么时候被访问。虽然这个算法不可能实现,但是最佳页面置换算法可以用于对可实现算法的性能进行衡量比较。

 

(缺页中断发生了9次,但是页面置换只出现了6次~) 


只不过,由于无法知道后面会不会再使用页面,OPT算法只是一种理想中的算法~ 

二.先进先出页面置换算法(FIFO)

        优先淘汰最早进入内存的页面~最简单的页面置换算法是先入先出(FIFO)法。这种算法的实质是,总是选择在主存中停留时间最长(即最老)的一页置换,即先进入内存的页,先退出内存。理由是:最早调入内存的页,其不再被使用的可能性比刚调入内存的可能性大。建立一个FIFO队列,收容所有在内存中的页。被置换页面总是在队列头上进行。当一个页面被放入内存时,就把它插在队尾上。

贝拉蒂异常:

三.最近最久未使用置换算法(LRU)

        选择最近最长时间未访问过的页面予以淘汰~FIFO算法和OPT算法之间的主要差别是,FIFO算法利用页面进入内存后的时间长短作为置换依据,而OPT算法的依据是将来使用页面的时间。如果以最近的过去作为不久将来的近似,那么就可以把过去最长一段时间里不曾被使用的页面置换掉。它的实质是,当需要置换一页时,选择在之前一段时间里最久没有使用过的页面予以置换。这种算法就称为最久未使用算法(Least Recently Used,LRU)。

四.时钟置换算法(clock)

又被称为最近未使用算法——真正意义上使得性能与开销较为均衡~

五.改进型的时钟置换

各种算法之间的对比:

 


http://lihuaxi.xjx100.cn/news/1903419.html

相关文章

vmware安装银河麒麟V10高级服务器操作系统

vmware安装银河麒麟V10高级服务器操作系统 1、下载银河麒麟V10镜像2、VMware安装银河麒麟V10高级服务器操作系统2.1、新建虚拟机2.2、安装虚拟机 3、配置银河麒麟V10高级服务器操作系统3.1、安装vmware tools3.2、配置静态IP地址 和 dns 1、下载银河麒麟V10镜像 官方提供使用通…

C语言--字符函数与字符串函数

大家好,我是残念,希望在你看完之后,能对你有所帮助,有什么不足请指正!共同学习交流 本文由:残念ing 原创CSDN首发,如需要转载请通知 个人主页:残念ing-CSDN博客,欢迎各位…

C语言第五十四弹---模拟使用strstr函数

使用C语言模拟使用strstr函数 定义:strstr 是一个 C 标准库函数,用于在一个字符串中查找另一个字符串的第一次出现位置。strstr 函数的声明如下: char* strstr(const char* haystack, const char* needle);它接受两个参数:haysta…

Linux(一):如何在 Linux 中检查未挂载的磁盘

如何在 Linux 中检查未挂载的磁盘 1、概述2、 具体方法3、总结 1、概述 大家好,我是欧阳方超,可以关注我的公众号“欧阳方超”,后续内容将在公众号首发。 在Linux系统中, 挂载磁盘之前需要先检查是否有未挂载的磁盘,那…

Java,自带的排序方法

假如定义了一个学生类,想根据学生的总分对学生进行排序 案例(进去是Student类的定义,用ctrlf 搜Collection,可以找到具体应用) Collection.sort(要排序的集合,new 一个比较器(){ 大括号里是让重写比较器的…

【pycharm】Pycharm常用快捷键

批量替换是指一次性替换多个文件中的指定内容。在开发过程中,可能会遇到需要替换多个文件中的某个字符串或者某段代码的情况。如果一个一个文件进行替换,那么将会非常耗时和繁琐。 而使用批量替换功能,则可以一次性完成所有文件的替换操作&am…

Linux中的20个基本“ls”命令示例

LS command & how to use rmdir command I) ls commandII) rmdir can not remove folder with entities (stuffed with files or folders) I) ls command URL source : https://zhuanlan.zhihu.com/p/635083904 Linux中的20个基本“ls”命令示例 这里将介绍以下ls 命令参…

搭建HarmonyOS开发环境(OpenHarmony3.2)

搭建HarmonyOS开发环境 引言下载介绍搭建流程WindowsLinux 扩展 引言 目前HarmonyOS的热度愈演愈烈,本文将介绍如何搭建HarmonyOS嵌入式开发环境,帮助想要使用HarmonyOS进行嵌入式开发的人员进行入门。 其实博主以前已经介绍过如何搭建HarmonyOS开发环境…