《操作系统 - 清华大学》7 -1:全局页面置换算法:局部页替换算法的问题、工作集模型

文章目录

  • 1. 局部页替换算法的问题
  • 2. 全局置换算法的工作原理
  • 3. 工作集模式
    • 3.1 工作集
    • 3.2 工作集的变化
  • 4 常驻集

1. 局部页替换算法的问题

局部页面置换算法 OPT,FIFO,LRU,Clock 等等,这些算法都是针对一个正在运行的程序来讲的,但操作系统其实可以支持多个正在执行的程序,如果每个执行程序都采取一个固定的局部页面置换算法会带来一些问题。这是为什么接下来要研究全局页面置换算法的很重要原因,可以看看到底有哪些问题?

接下看个例子:
在这里插入图片描述
在这里插入图片描述
这个例子采取 FIFO 页面算法。如果分配 3 个物理页帧会产生 9 次缺页错误,但是如果分配4个物理页帧,则会产生一次缺页错误,这很显著的区别,可以看到物理页帧的大小确实会对页面置换算法的效果产生很大的影响。

2. 全局置换算法的工作原理

在这里插入图片描述

那如果要对一个正在运行的程序分配一个固定的物理页帧,那其实就在某种程度上限制了这个程序产生缺页的特点,因为程序在运行过程中有阶段性,可能一开始是一种访问特征,可能需要很多内存,中间段可能需要很少,结束时又需要很多,是动态变化的过程,那么对物理页帧的需求是可变的。但是前面介绍算法都有一个假定,假定分配给进程的物理页帧是固定的.

如果系统里只跑这一个程序,那可以把所有的物理页帧都分配给它,这是没问题,但是操作系统里面可以跑多个程序,这时候在给每个程序分配固定的物理页帧,其实就限制了灵活性。

在这里插入图片描述
能不能根据程序不同运行阶段动态调整物理页帧的大小,这就是全局页面置换算法要考虑的问题。

3. 工作集模式

考虑这个问题之前,介绍一个能够有效实现全局页面置换算法的一些基本原理,一个很重要的原理就是工作集模型。
在这里插入图片描述
前面介绍的各种页面置换算法,包括局部性算法和接下来要介绍的全局页面置换算法都有一个前提,如果这个算法要有效,一般来说需要这个程序具有局部性,又一次提到局部性原理,程序具有局部性原理,那么像 LRU 和 Clock 算法就可以产生更少的缺页异常。但如果访问序列没有任何局部性,那么无论采取哪种页面置换算法都会导致缺页中断,但如果局部性原理是成立的,也就说程序具有局部性原理,具有时间访问局部性也具有空间访问局部性,那么采取不同的页面置换算法就应该有不同的效果,那么怎么来表现出这个所谓的局部性呢?可以通过一种所谓的工作集模型来表现它,从而可以有效地分析它的局部性。

3.1 工作集

工作集是说一个进程当前正在使用的逻辑页面的集合称之为工作集。这里面两个需要注意的地方,第一个当前正在使用,当前正在使用就是一个时间段,就是起始时间以及持续的时间长度,第二个是逻辑页面集合,这是一个集合,集合里面存了在这个时间段内这个运行程序访问的页面集合。
在这里插入图片描述

  • 那怎么来表示它?

    t 代表当前执行时刻,然后长度形成所谓的工作集窗口,长度用 Δ 表示,Δ 称之为工作集窗口,具体含义是一个定长的页面访问的时间窗口,需要注意 t + Δ 形成时间段,W( t,Δ )代表从这个时刻开始持续一段时间,在这个时间段里面所有访问到的页面形成的集合,很显然如果 t 在变,因为执行过程中这个 t 一直在变,但 Δ 不变,在这种情况下,工作集窗口一直在滑动,滑动中工作集窗口访问的页集合也会不断变化,用两个竖线框起来,中间写W( t,Δ ),代表工作级大小,代表在这个时间段内,访问页集合的大小。

    例子来表示:
    在这里插入图片描述

    上面列出页面访问序列,起始时间是 t1,需要注意是从当前往过去一段长度,这么一个长度是 Δ。如果 Δ 是10,那么左侧工作集是1 2 5 6 7 这几个页面,集合大小是5,一共有5个页面。

    另一个起始件是 t2,窗口还是10,访问的页面只有两个3 4,那可以看出来这两个特点不一样,其实访问特点表示出了这个程序在不同的运行阶段,它对内存访问特点的展现,比如在这里会看出来 t2 起始时间的工作集,它具有很好的局部性,因为它重复的访问3和4,局部性比较好,而 t1 可以看出来重复性没有那么强,但是在某个小时间段里面它重复访问了 4 次 7这个页面,它有一定的局部性,那它的整体局部性不如 t2。

3.2 工作集的变化

在这里插入图片描述
工作集在整个执行过程中会随着程序执行的特点变化而变化,在一开始时,可能它访问新的页不具有一定局部性,会有大的波动,当访问到局部性比较好的区域时,它的工作集大小也会比较稳定,但是由于程序本身的特点,有可能在某些地方会出现工作集快速扩展或者快速收缩的情况,也可能在某阶段保持一定的稳定性。

如上图所示,随着程序执行过程,会体现一定特征,有波峰、波谷、平的情况,希望能够根据它这个特征来有效地设计一个基于多个程序的页面置换算法。

4 常驻集

在这里插入图片描述
除了工作集概念之外,还需要另外一个概念,常驻集。常驻很显然是常驻内存的意思,常驻集是指在当前时刻正在运行的程序实际驻入在内存中的页面集合。工作集其实体现了运行程序在运行过程中对页面访问的属性,是这个程序本身的固有属性。

而常驻集是操作系统和计算机系统给运行程序分配的物理空间大小,以及它采用的页面置换算法来决定到底应该把哪些页面放在这个内存中,所以常驻集和工作集体现的特点是不一样。常驻集就是当前运行程序需要访问的页哪些在内存中,而工作集指的是当程序在运行过程中它所需要访问的页是哪些。

当然程序访问页有可能在内容中,也可能不在内存中,这是工作集和常驻集的不同之处,当然希望工作集所涉及那些页都在内存中,也就都在常驻集中,那这种情况最好,一旦工作集中某些页不在常驻集里面,那就意味着不在内存中,这时候就会产生缺页中断,希望这两个集合尽量是重叠的,这样可以使得缺页次数比较小。

当程序在跑的时候,操作系统可以给运行程序分配很大的常驻集,也可以分配很小的长驻集,那么大和小其实相对的,就说有可能分配小了之后,会产生很多缺页中断,但是分配的多也有一个上限,不是说给它越多越好,可能给到一定数量之后再给它更多的物理页意义不大。这时候需要通过动态调整,把多余的物理页给其他程序,这样整体上来说不同的程序合在一起,它总的缺页次数比较小。

其实可以看出来,常驻集就是体现出来一种,如果说根据不同的程序的运行特点不同的常驻级,使得整体缺页次数少,那么整体系统性能就会都到提高。那采取局部页面置换算法可能就不能有效地解决问题,因此需要考虑设计全局页面置换算法来解决这个问题。

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.rhkb.cn/news/490045.html

如若内容造成侵权/违法违规/事实不符,请联系长河编程网进行投诉反馈email:809451989@qq.com,一经查实,立即删除!

相关文章

SpringCloud和Nacos的基础知识和使用

1.什么是SpringCloud ​   什么是微服务? ​   假如我们需要搭建一个网上购物系统,那么我们需要哪些功能呢?商品中心、订单中心和客户中心等。 ​   当业务功能较少时,我们可以把这些功能塞到一个SpringBoot项目中来进行…

LLMs之APE:基于Claude的Prompt Improver的简介、使用方法、案例应用之详细攻略

LLMs之APE:基于Claude的Prompt Improver的简介、使用方法、案例应用之详细攻略 目录 Prompt Improver的简介 0、背景痛点 1、优势 2、实现思路 Prompt优化 示例管理 提示词评估 Prompt Improver的使用方法 1、使用方法 Prompt Improver的案例应用 1、Kap…

CMake简单使用(二)

目录 五、scope 作用域5.1 作用域的类型5.1.1 全局作用域5.1.2 目录作用域5.1.3 函数作用域 六、宏6.1 基本语法6.2 演示代码 七、CMake构建项目7.1 全局变量7.2 写入源码路径7.3 调用子目录cmake脚本7.4 CMakeLists 嵌套(最常用) 八、CMake 与库8.1 CMake生成动静态库8.1.1 动…

ASP.NET |日常开发中读写XML详解

ASP.NET |日常开发中读写XML详解 前言一、XML 概述1.1 定义和结构1.2 应用场景 二、读取 XML 文件2.1 使用XmlDocument类(DOM 方式)2.2 使用XmlReader类(流方式) 三、写入 XML 文件3.1 使用XmlDocument类3.2 使用XmlWr…

自动化测试之单元测试框架

单元测试框架 一、单元测试的定义 1:什么是单元测试? 还记不记得我们软件测试学习的时候,按照定义:单元测试就是对单个模块或者是单个函数进行测试,一般是开发做的,按照阶段来分,一般就是单元…

JAVA爬虫获取1688关键词接口

以下是使用Java爬虫获取1688关键词接口的详细步骤和示例代码: 一、获取API接口访问权限 要使用1688关键词接口,首先需要获取API的使用权限,并了解接口规范。以下是获取API接口的详细步骤: 注册账号:在1688平台注册一…

【游戏设计原理】8 - 霍华德的隐匿性游戏设计法则

1. 霍华德的隐匿性游戏设计法则 霍华德的隐匿性游戏设计法则的核心思想是:“秘密的重要性与其表面上的无辜性和完整度成正比”。这意味着,当游戏开始时,设计上越是简洁、无害、直观的元素,隐藏的深层意义和转折就会显得更加震撼和…

k8s中用filebeat文件如何收集不同service的日志

以下是一个详细的从在 Kubernetes 集群中部署 Filebeat,到实现按web-oper、web-api微服务分离日志并存储到不同索引的完整方案: 理解需求:按服务分离日志索引 在 Kubernetes 集群中,有web-oper和web-api两种微服务,希…

前端退出对话框也就是点击右上角的叉,显示灰色界面,已经解决

文章目录 遇到一个前端bug,点击生成邀请码 打开对话框 然后我再点击叉号,退出对话框,虽然退出了对话框,但是显示灰色界面。如下图: 导致界面就会失效,点击任何地方都没有反应。 发现是如下代码的问题&am…

一区向量加权算法优化INFO-CNN-SVM卷积神经网络结合支持向量机多特征分类预测

一区向量加权算法优化INFO-CNN-SVM卷积神经网络结合支持向量机多特征分类预测 目录 一区向量加权算法优化INFO-CNN-SVM卷积神经网络结合支持向量机多特征分类预测分类效果基本描述程序设计参考资料 分类效果 基本描述 1.Matlab实现INFO-CNN-SVM向量加权算法优化卷积神经网络结…

【Stable Diffusion】SD安装、常用模型(checkpoint、embedding、LORA)、提示词具、常用插件

Stable Diffusion,一款强大的AI模型,让我们能够创造出惊人的艺术作品。本文将为您介绍如何安装Stable Diffusion以及深入使用的学习教程。 1. 安装Stable Diffusion (需要的小伙伴可以文末自行扫描获取) Stable Diffusion的安装可能是第一步&#xff0…

【工具变量】上市公司企业资本支出数据(1990-2022年)

一、计算方式:资本支出的公式为:经营租赁所支付的现金购建固定资产、无影资产和其他长期资产所支付的现金-处置固定资产、无形资产和其它长期资产而收回的现金净额。 二、数据范围:包括原始数据详细来源和最终数据结果 三、参考文献:[1]杨兴…

洛谷 P10483 小猫爬山 完整题解

一、题目查看 P10483 小猫爬山 - 洛谷 二、解题思路 我们将采取递归 剪枝的思想&#xff1a; sum数组存放每辆车当前载重。 每次新考虑一只小猫时&#xff0c;我们尝试把它放进每个可以放进的缆车中&#xff08;需要回溯&#xff09; for (int i 0; i < k; i) {if (sum[i]…

Leetcode二叉树部分笔记

提示&#xff1a;文章写完后&#xff0c;目录可以自动生成&#xff0c;如何生成可参考右边的帮助文档 Leetcode二叉树部分笔记 1.二叉树的最大深度2.同样的树3.翻转二叉树4.对称二叉树**5. **填充每个节点的下一个右侧节点指针 II**6. 二叉树展开为链表7. 路经总和8.完全二叉树…

如何用状态图进行设计06

独立的控制线程 扩展状态图也提供了获取无序的输入事件的方法。这意味着一个状态开始时&#xff0c;它可能位于一个或多个控制线程的交叉点。控制行为的每个独立线程都类似一个状态机&#xff0c;独自运行&#xff0c;互不干扰。因此&#xff0c;这些控制线程可能会同时发生状…

【多模态】MiniCPM-V多模态大模型使用学习

MiniCPM-V模型使用 前言1. 模型文件下载和选择2. 环境安装配置3. 模型微调3.1 qlora微调minicpm-v-int43.2 lora微调minicpm-v3.3 merge_lora3.4 lora微调后量化int4 4. 模型推理4.1 huggingface API4.2 swift API(A) swift&#xff08;不支持batch inference&#xff09;(B) s…

快速上手Neo4j图关系数据库

参考视频&#xff1a; 【IT老齐589】快速上手Neo4j网状关系图库 1 Neo4j简介 Neo4j是一个图数据库&#xff0c;是知识图谱的基础 在Neo4j中&#xff0c;数据的基本构建块包括&#xff1a; 节点(Nodes)关系(Relationships)属性(Properties)标签(Labels) 1.1 节点(Nodes) 节点…

Transformer: Attention Is All You Need (2017) 翻译

论文&#xff1a;Attention Is All You Need 下载地址如下: download: Transformer Attention Is All you need Attention Is All You Need 中文 《Attention Is All You Need》是《Transformer》模型的开创性论文&#xff0c;提出了一种全新的基于注意力机制的架构&#xf…

可视化报表如何制作?一文详解如何用报表工具开发可视化报表

在如今这个数据驱动的商业时代&#xff0c;众多企业正如火如荼地推进数字化转型&#xff0c;力求在激烈的市场竞争中占据先机。然而&#xff0c;随着业务规模的扩大和运营复杂度的提升&#xff0c;企业的数据量爆炸式增长&#xff0c;传统报表格式单一、信息呈现密集且不易解读…

Angular由一个bug说起之十二:网页页面持续占用CPU过高

随着网络日益发达&#xff0c;网页的内容也更加丰富&#xff0c;形式也更加多样化。而随之而来的性能问题也不容小觑。这篇文章我会根据我在实践中遇到的一个问题来总结&#xff0c;我在面对性能问题的一些解决步骤&#xff0c;希望能对大家有所启发。 查找问题原因 我接触的…