分页虚拟存储管理——页面置换算法

2023-11-25 15:30

本文主要是介绍分页虚拟存储管理——页面置换算法,希望对大家解决编程问题提供一定的参考价值,需要的开发者们随着小编来一起学习吧!

页面置换算法

  • 最佳置换算法(Optimal,OPT)
  • 先入先出置换算法(First-In First-Out,FIFO)
  • 最近最久未使用置换算法(Least Recently Used,LRU)

最佳置换算法(Optimal,OPT)

最佳置换算法是一种理想化的算法。要求从内存中淘汰以后永远不使用的页,若无这样的页,则淘汰在最长时间内不再被访问的页。采用最佳置换算法,可以保证获得最低的缺页率。但是人们无法预知一个进程在内存的若干个页面,哪一个页面是未来最长时间不再被访问的,因此这种算法是无法实现的,只能作为其他置换算法的衡量标准。

【例题】在一个分页式虚拟存储管理的系统中,一个作业的页面走向为1,2,1,0,4,1,3,4,2,1,4,1每调进一个新页就发生一次缺页中断。设分配给该作业的物理块数M=3,采用最佳置换算法求缺页中断次数F和缺页率f。
分析题目
页面走向为:1,2,1,0,4,1,3,4,2,1,4,1
缺页中断原则:每调进一个新页就发生一次缺页中断
分配给该作业的物理块数M=3,意思是:内存中最多可放置3页。
解:页面置换情况如下表所示。
为了好看,先写一个空表
在这里插入图片描述
访问顺序就是按照页面走向来排的,
1 进来时,内存尚为空,1 进来后占据1页。由于在 1 进来之前内存块中事先没有 1 的存在,所以此时 1 对于内存而言是一个新页,按照题目缺页中断的原则
每调进一个新页就发生一次缺页中断
,那么缺页数相应的加1,此时缺页数=1。
在这里插入图片描述
2进来时,内存已经被1占据了1块,此时内存剩余容量为2。当2进来后占据1页。由于在2进来之前内存中事先没有2的存在,所以此时 2 对于内存而言是一个新页,按照题目缺页中断的原则每调进一个新页就发生一次缺页中断,那么缺页数相应的加1,此时缺页数=2。
在这里插入图片描述
1进来时,内存已经被12占据了2块,此时内存剩余量为1。当1进来后,由于在1进来之前内存中事先有1的存在。所以此时的1对于内存而言不是一个新页。内存块无需被多占据1页,相应的缺页数也无需变化。
在这里插入图片描述
0进来时,内存已经被12、占据了2块,此时内存剩余量为1,0 是一个新页,所以缺页数应该加1,此时缺页数=3。
在这里插入图片描述
4进来时,内存已经被120占据了3块,此时内存无剩余量,且4 是一个新页,4想要进来就必须替换掉1,2,0中的一个,替换的规则就是看4后面的访问顺序 1,3,4,2,1,4,1那么究竟要替换哪一个数呢?答案是0,最佳置换算法的原理是:淘汰在最长时间内不再被访问的页,4要替换掉1,2,0中的在最长时间内不再被访问的页,当然就是0啦,4后面的访问顺序里都没有0被访问了,所以就让4替换掉0,与此同时缺页数加1,此时缺页数=4。
在这里插入图片描述
1进来时,内存已经被1,2,4占据了3块,此时内存剩余量为0。当1进来后,由于在1进来之前内存中事先有1的存在。所以此时的1对于内存而言不是一个新页。内存块无需被多占据1页,相应的缺页数也无需变化。
在这里插入图片描述
3进来时,内存已经被1,2,4占据了3块,此时内存剩余量为0。且3 是一个新页,3想要进来就必须替换掉1,2,4中的一个,替换的规则就是看3后面的访问顺序 4,2,1,4,1那么究竟要替换哪一个数呢?答案是1,最佳置换算法的原理是:淘汰在最长时间内不再被访问的页,3要替换掉1,2,4中的在最长时间内不再被访问的页,当然就是1啦,3后面的访问顺序相比较于4,21被访问的时候还早着呢!所以3要去置换1,与此同时缺页数加1,此时缺页数=5。
在这里插入图片描述
4进来时,内存已经被3,2,4占据了3块,此时内存剩余量为0。当4进来后,由于在4进来之前内存中事先有4的存在。所以此时的4对于内存而言不是一个新页。内存块无需被多占据1页,相应的缺页数也无需变化。
在这里插入图片描述
2进来时,内存已经被3,2,4占据了3块,此时内存剩余量为0。当2进来后,由于在2进来之前内存中事先有2的存在。所以此时的2对于内存而言不是一个新页。内存块无需被多占据1页,相应的缺页数也无需变化。
在这里插入图片描述
1进来时,内存已经被3,2,4占据了3块,此时内存剩余量为0。且1 是一个新页,1想要进来就必须替换掉3,2,4中的一个,替换的规则就是看1后面的访问顺序 4,1那么究竟要替换哪一个数呢?答案是3,最佳置换算法的原理是:淘汰在最长时间内不再被访问的页,1要替换掉3,2,4中的在最长时间内不再被访问的页,我们发现在后续的访问顺序中32都不会被访问到了,那么究竟要替换它们两个中的哪一个呢答案是3,(通过上一步2进入内存的时候3就已经存在了,32来得更早,换句话说32更早访问,那么相比23再被访问的时间就会晚一点),与此同时缺页数加1,此时缺页数=6。
在这里插入图片描述
4进来时,内存已经被1,2,4占据了3块,此时内存剩余量为0。当4进来后,由于在4进来之前内存中事先有4的存在。所以此时的4对于内存而言不是一个新页。内存块无需被多占据1页,相应的缺页数也无需变化。
在这里插入图片描述
1进来时,内存已经被1,2,4占据了3块,此时内存剩余量为0。当1进来后,由于在1进来之前内存中事先有1的存在。所以此时的1对于内存而言不是一个新页。内存块无需被多占据1页,相应的缺页数也无需变化。
在这里插入图片描述
至此所有的页面都访问完毕了,对应的页面置换情况表也成功出炉了:
在这里插入图片描述
缺页中断次数:F=6
缺页率:f=6/12=50%

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

原理:淘汰最早进入内存的那个页面。因为,最早进入的页面,其不再使用的可能性比最近调入的页面要大。这种置换算法实现简单,只要把各个调入内存的页按其进入内存的现后顺序连成一个队列即可,总是淘汰队首的那一页。
【例题】在一个分页式虚拟存储管理的系统中,一个作业的
页面走向为1,2,1,0,4,1,3,4,2,1,4,1
每调进一个新页就发生一次缺页中断。设分配给该作业的物理块数M=3时,采用先入先出置换算法求缺页中断次数F和缺页率f。
分析题目
页面走向为:1,2,1,0,4,1,3,4,2,1,4,1
缺页中断原则:每调进一个新页就发生一次缺页中断
分配给该作业的物理块数M=3,意思是:内存中最多可放置3页。
解:分配给该作业的物理块数M=3时,页面置换情况如下表所示。
为了好看,先写一个空表在这里插入图片描述
访问顺序就是按照页面走向来排的,
1 进来时,内存尚为空,1 进来后占据1页。由于在 1 进来之前内存块中事先没有 1 的存在,所以此时 1 对于内存而言是一个新页,按照题目缺页中断的原则
每调进一个新页就发生一次缺页中断
,那么缺页数相应的加1,此时缺页数=1。
在这里插入图片描述
2进来时,内存已经被1占据了1块,此时内存剩余容量为2。当2进来后占据1页。由于在2进来之前内存中事先没有2的存在,所以此时 2 对于内存而言是一个新页,按照题目缺页中断的原则每调进一个新页就发生一次缺页中断,那么缺页数相应的加1,此时缺页数=2。
在这里插入图片描述
1进来时,内存已经被12占据了2块,此时内存剩余量为1。当1进来后,由于在1进来之前内存中事先有1的存在。所以此时的1对于内存而言不是一个新页。内存块无需被多占据1页,相应的缺页数也无需变化。
在这里插入图片描述
0进来时,内存已经被12、占据了2块,此时内存剩余量为1,0 是一个新页,所以缺页数应该加1,此时缺页数=3。
在这里插入图片描述
4进来时,内存已经被120占据了3块,此时内存无剩余量,且4 是一个新页,4想要进来就必须替换掉1,2,0中的一个,替换的规则就是看1,2,0谁是最先进入内存的,答案是1,先进先出置换算法的原理是:淘汰最早进入内存的那个页面,4要替换掉1,2,0中最早进入内存的页面,当然就是1啦,所以就让4替换掉1,与此同时缺页数加1,此时缺页数=4。
在这里插入图片描述
1进来时,内存已经被420占据了3块,此时内存无剩余量,且1 是一个新页,1想要进来就必须替换掉4,2,0中的一个,替换的规则就是看4,2,0谁是最先进入内存的,答案是2,先进先出置换算法的原理是:淘汰最早进入内存的那个页面,1要替换掉4,2,0中最早进入内存的页面,当然就是2啦,所以就让1替换掉2,与此同时缺页数加1,此时缺页数=5。
在这里插入图片描述
3进来时,内存已经被410占据了3块,此时内存无剩余量,且 3 是一个新页,3想要进来就必须替换掉4,1,0中的一个,替换的规则就是看4,1,0谁是最先进入内存的,答案是0,先进先出置换算法的原理是:淘汰最早进入内存的那个页面,3要替换掉4,1,0中最早进入内存的页面,当然就是0啦,所以就让3替换掉0,与此同时缺页数加1,此时缺页数=6。
在这里插入图片描述

4进来时,内存已经被4,1,3占据了3块,此时内存剩余量为0。当4进来后,由于在4进来之前内存中事先有4的存在。所以此时的4对于内存而言不是一个新页。内存块无需被多占据1页,相应的缺页数也无需变化。
在这里插入图片描述
2进来时,内存已经被413占据了3块,此时内存无剩余量,且2 是一个新页,2想要进来就必须替换掉4,1,3中的一个,替换的规则就是看4,1,3谁是最先进入内存的,答案是4,先进先出置换算法的原理是:淘汰最早进入内存的那个页面,2要替换掉4,1,3中最早进入内存的页面,当然就是4啦,所以就让2替换掉4,与此同时缺页数加1,此时缺页数=7。
在这里插入图片描述
1进来时,内存已经被2,1,3占据了3块,此时内存剩余量为0。当1进来后,由于在1进来之前内存中事先有1的存在。所以此时的1对于内存而言不是一个新页。内存块无需被多占据1页,相应的缺页数也无需变化。
在这里插入图片描述
4进来时,内存已经被213占据了3块,此时内存无剩余量,且4 是一个新页,4想要进来就必须替换掉2,1,3中的一个,替换的规则就是看2,1,3谁是最先进入内存的,答案是1,先进先出置换算法的原理是:淘汰最早进入内存的那个页面,4要替换掉2,1,3中最早进入内存的页面,当然就是1啦,所以就让4替换掉1,与此同时缺页数加1,此时缺页数=8。
在这里插入图片描述
1进来时,内存已经被243占据了3块,此时内存无剩余量,且1 是一个新页,1想要进来就必须替换掉2,4,3中的一个,替换的规则就是看2,4,3谁是最先进入内存的,答案是3,先进先出置换算法的原理是:淘汰最早进入内存的那个页面,1要替换掉2,4,3中最早进入内存的页面,当然就是3啦,所以就让1替换掉3,与此同时缺页数加1,此时缺页数=9。
在这里插入图片描述

至此所有的页面都访问完毕了,对应的页面置换情况表也成功出炉了:
在这里插入图片描述
缺页中断次数:F=9
缺页率:f=9/12=75%

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

原理:选择在最近一段时间内最久没有使用过的页,把它淘汰掉
【例题】在一个分页式虚拟存储管理的系统中,一个作业的页面走向为1,2,1,0,4,1,3,4,2,1,4,1每调进一个新页就发生一次缺页中断。设分配给该作业的物理块数M=3时,采用最近最久未使用置换算法求缺页中断次数F和缺页率f。
分析题目
页面走向为:1,2,1,0,4,1,3,4,2,1,4,1
缺页中断原则:每调进一个新页就发生一次缺页中断
分配给该作业的物理块数M=3,意思是:内存中最多可放置3页。
解:分配给该作业的物理块数M=3时,页面置换情况如下表所示。
为了好看,先写一个空表在这里插入图片描述
访问顺序就是按照页面走向来排的,
1 进来时,内存尚为空,1 进来后占据1页。由于在 1 进来之前内存块中事先没有 1 的存在,所以此时 1 对于内存而言是一个新页,按照题目缺页中断的原则
每调进一个新页就发生一次缺页中断
,那么缺页数相应的加1,此时缺页数=1。
在这里插入图片描述
2进来时,内存已经被1占据了1块,此时内存剩余容量为2。当2进来后占据1页。由于在2进来之前内存中事先没有2的存在,所以此时 2 对于内存而言是一个新页,按照题目缺页中断的原则每调进一个新页就发生一次缺页中断,那么缺页数相应的加1,此时缺页数=2。
在这里插入图片描述
1进来时,内存已经被12占据了2块,此时内存剩余量为1。当1进来后,由于在1进来之前内存中事先有1的存在。所以此时的1对于内存而言不是一个新页。内存块无需被多占据1页,相应的缺页数也无需变化。
在这里插入图片描述
0进来时,内存已经被12、占据了2块,此时内存剩余量为1,0 是一个新页,所以缺页数应该加1,此时缺页数=3。
在这里插入图片描述
4进来时,内存已经被120占据了3块,此时内存无剩余量,且4 是一个新页,4想要进来就必须替换掉1,2,0中的一个,替换的规则就是看4左边的访问过了的顺序 1,2,1,0,找到离4最近的要替换的数字120,那么究竟要替换哪一个数呢?答案是2最近最久未使用置换算法的原理是:淘汰在最近一段时间内最久没有使用的页,(可以给个度量来看,如:上一秒刚访问了0,上上一秒访问了1,上上上一秒访问了2)所以最近最久未使用的就是2,所以就让4替换掉2,与此同时缺页数加1,此时缺页数=4。
在这里插入图片描述

1进来时,内存已经被140占据了3块,此时内存剩余量为0。当1进来后,由于在1进来之前内存中事先有1的存在。所以此时的1对于内存而言不是一个新页。内存块无需被多占据1页,相应的缺页数也无需变化。
在这里插入图片描述
3进来时,内存已经被140占据了3块,此时内存无剩余量,且3 是一个新页,3想要进来就必须替换掉1,4,0中的一个,替换的规则就是看3左边的访问过了的顺序 1,2,1,0,4,1,找到离3最近的要替换的数字1,4,0那么究竟要替换哪一个数呢?答案是0最近最久未使用置换算法的原理是:淘汰在最近一段时间内最久没有使用的页,(可以给个度量来看,如:上一秒刚访问了1,上上一秒访问了4,上上上一秒访问了0)所以最近最久未使用的就是0,所以就让3替换掉0,与此同时缺页数加1,此时缺页数=5。
在这里插入图片描述
4进来时,内存已经被143占据了3块,此时内存剩余量为0。当4进来后,由于在4进来之前内存中事先有4的存在。所以此时的4对于内存而言不是一个新页。内存块无需被多占据1页,相应的缺页数也无需变化。
在这里插入图片描述
2进来时,内存已经被143占据了3块,此时内存无剩余量,且2 是一个新页,2想要进来就必须替换掉1,4,3中的一个,替换的规则就是看2左边的访问过了的顺序 1,2,1,0,4,1,3,4,找到离2最近的1,4,3那么究竟要替换哪一个数呢?答案是1最近最久未使用置换算法的原理是:淘汰在最近一段时间内最久没有使用的页,(可以给个度量来看,如:上一秒刚访问了4,上上一秒访问了3,上上上一秒访问了1)所以最近最久未使用的就是1,所以就让2替换掉1,与此同时缺页数加1,此时缺页数=6。
在这里插入图片描述

1进来时,内存已经被243占据了3块,此时内存无剩余量,且** 1** 是一个新页,1想要进来就必须替换掉2,4,3中的一个,替换的规则就是看1左边的访问过了的顺序1,2,1,0,4,1,3,4,2,找到离1最近的2,4,3那么究竟要替换哪一个数呢?答案是3最近最久未使用置换算法的原理是:淘汰在最近一段时间内最久没有使用的页,(可以给个度量来看,如:上一秒刚访问了2,上上一秒访问了4,上上上一秒访问了3)所以最近最久未使用的就是3,所以就让1替换掉3,与此同时缺页数加1,此时缺页数=7。
在这里插入图片描述

4进来时,内存已经被241占据了3块,此时内存剩余量为0。当4进来后,由于在4进来之前内存中事先有4的存在。所以此时的4对于内存而言不是一个新页。内存块无需被多占据1页,相应的缺页数也无需变化。
在这里插入图片描述
1进来时,内存已经被241占据了3块,此时内存剩余量为0。当1进来后,由于在1进来之前内存中事先有1的存在。所以此时的1对于内存而言不是一个新页。内存块无需被多占据1页,相应的缺页数也无需变化。
在这里插入图片描述
至此所有的页面都访问完毕了,对应的页面置换情况表也成功出炉了:
在这里插入图片描述
缺页中断次数:F=7
缺页率:f=7/12=58%

相关拓展练习请转到:

这篇关于分页虚拟存储管理——页面置换算法的文章就介绍到这儿,希望我们推荐的文章对编程师们有所帮助!



http://www.chinasem.cn/article/424048

相关文章

SpringBoot 多环境开发实战(从配置、管理与控制)

《SpringBoot多环境开发实战(从配置、管理与控制)》本文详解SpringBoot多环境配置,涵盖单文件YAML、多文件模式、MavenProfile分组及激活策略,通过优先级控制灵活切换环境... 目录一、多环境开发基础(单文件 YAML 版)(一)配置原理与优势(二)实操示例二、多环境开发多文件版

Redis实现高效内存管理的示例代码

《Redis实现高效内存管理的示例代码》Redis内存管理是其核心功能之一,为了高效地利用内存,Redis采用了多种技术和策略,如优化的数据结构、内存分配策略、内存回收、数据压缩等,下面就来详细的介绍... 目录1. 内存分配策略jemalloc 的使用2. 数据压缩和编码ziplist示例代码3. 优化的

SpringBoot集成XXL-JOB实现任务管理全流程

《SpringBoot集成XXL-JOB实现任务管理全流程》XXL-JOB是一款轻量级分布式任务调度平台,功能丰富、界面简洁、易于扩展,本文介绍如何通过SpringBoot项目,使用RestTempl... 目录一、前言二、项目结构简述三、Maven 依赖四、Controller 代码详解五、Service

深入解析C++ 中std::map内存管理

《深入解析C++中std::map内存管理》文章详解C++std::map内存管理,指出clear()仅删除元素可能不释放底层内存,建议用swap()与空map交换以彻底释放,针对指针类型需手动de... 目录1️、基本清空std::map2️、使用 swap 彻底释放内存3️、map 中存储指针类型的对象

Linux系统管理与进程任务管理方式

《Linux系统管理与进程任务管理方式》本文系统讲解Linux管理核心技能,涵盖引导流程、服务控制(Systemd与GRUB2)、进程管理(前台/后台运行、工具使用)、计划任务(at/cron)及常用... 目录引言一、linux系统引导过程与服务控制1.1 系统引导的五个关键阶段1.2 GRUB2的进化优

Spring Security 前后端分离场景下的会话并发管理

《SpringSecurity前后端分离场景下的会话并发管理》本文介绍了在前后端分离架构下实现SpringSecurity会话并发管理的问题,传统Web开发中只需简单配置sessionManage... 目录背景分析传统 web 开发中的 sessionManagement 入口ConcurrentSess

Mybatis-Plus 3.5.12 分页拦截器消失的问题及快速解决方法

《Mybatis-Plus3.5.12分页拦截器消失的问题及快速解决方法》作为Java开发者,我们都爱用Mybatis-Plus简化CRUD操作,尤其是它的分页功能,几行代码就能搞定复杂的分页查询... 目录一、问题场景:分页拦截器突然 “失踪”二、问题根源:依赖拆分惹的祸三、解决办法:添加扩展依赖四、分页

Linux之UDP和TCP报头管理方式

《Linux之UDP和TCP报头管理方式》文章系统讲解了传输层协议UDP与TCP的核心区别:UDP无连接、不可靠,适合实时传输(如视频),通过端口号标识应用;TCP有连接、可靠,通过确认应答、序号、窗... 目录一、关于端口号1.1 端口号的理解1.2 端口号范围的划分1.3 认识知名端口号1.4 一个进程

SpringBoot结合Knife4j进行API分组授权管理配置详解

《SpringBoot结合Knife4j进行API分组授权管理配置详解》在现代的微服务架构中,API文档和授权管理是不可或缺的一部分,本文将介绍如何在SpringBoot应用中集成Knife4j,并进... 目录环境准备配置 Swagger配置 Swagger OpenAPI自定义 Swagger UI 底

Linux权限管理与ACL访问控制详解

《Linux权限管理与ACL访问控制详解》Linux权限管理涵盖基本rwx权限(通过chmod设置)、特殊权限(SUID/SGID/StickyBit)及ACL精细授权,由umask决定默认权限,需合... 目录一、基本权限概述1. 基本权限与数字对应关系二、权限管理命令(chmod)1. 字符模式语法2.