《操作系统 - 清华大学》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 常驻集

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

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

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

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

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

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

如若内容造成侵权/违法违规/事实不符,请联系我们进行投诉反馈qq邮箱809451989@qq.com,一经查实,立即删除!

相关文章

力扣-图论-12【算法学习day.62】

前言 ###我做这类文章一个重要的目的还是给正在学习的大家提供方向和记录学习过程(例如想要掌握基础用法,该刷哪些题?)我的解析也不会做的非常详细,只会提供思路和一些关键点,力扣上的大佬们的题解质量是非…

每日十题八股-2024年12月14日

1.类加载器有哪些? 2.双亲委派模型的作用 3.讲一下类加载过程? 4.讲一下类的加载和双亲委派原则 5.什么是Java里的垃圾回收?如何触发垃圾回收? 6.判断垃圾的方法有哪些? 7.垃圾回收算法是什么,是为了解决了…

智能引导小车充电系统设计(论文+源码)

1总体方案设计 在16*16点阵LED字符显示器的设计中,系统总体框架如图2.4所示,包括单片机主控模复位电路模块、晶振电路模块、按键电路模块、LED点阵驱动电路模块,蓝牙模块等构成。系统功能实现主要是利用系统在软件程序编写过程中&#xff0c…

【Vue】自定义指令、插槽

目录 自定义指令 是什么 作用 使用方法 定义 使用 自定义指令配合绑定数据 语法 自定义指令的简写 语法 使用时机 插槽 什么是插槽 默认(匿名)插槽 ​编辑插槽的默认值 具名插槽 使用方法 简写 使用示例 作用域插槽 自定义指令 是什…

顺序队列的实现及其应用

一、概念 队列是允许在两端(队头、队尾)进行插入和读出操作的线性表 默认情况下,队尾插入,队头读出(这一点和排队很像),先进先出FIFO 队中没有元素时称为空队 当队列两端都允许插入、读出时&…

Web安全深度剖析

1.Web安全简介 ​ 攻击者想要对计算机进行渗透,有一个条件是必须的,就是攻击者的计算机与服务器必须能够正常通信,服务器与客户端进行通信依靠的就是端口。 ​ 如今的web应该称之为web应用程序,功能强大,离不开四个要…

C# 探险之旅:第九节 - 循环(for):无限循环的魔法轮盘!

嘿,勇敢的探险家们,欢迎回到C#的神秘世界!在这一节里,我们将踏上一场关于循环的奇妙冒险,特别是那个能带我们无限次探险的“for循环”!准备好了吗?让我们一起揭开for循环的神秘面纱,…

解决Logitech G hub 无法进入一直转圈的方案(2024.12)

如果你不是最新版本无法加载尝试以下方案:删除AppData 文件夹下的logihub文件夹 具体路径:用户名根据实际你的请情况修改 C:\Users\Administrator\AppData\Local 如果你有通过lua编译脚本,记得备份!! ↓如果你是最新…

如何使用 Docker Compose 创建 LAMP 环境 ?

现如今,通过 Docker 容器化部署环境已经逐渐成为主流,特别是在部署像 LAMP (Linux、Apache、MySQL、PHP) 这样的复杂环境时。本教程旨在带您完成使用 Docker-Compose 建立 LAMP 环境的整个过程,同时还包括定制 PHP 环境的步骤,安装…

12.1【JAVA EXP4】next项目

next项目构建问题 详解一下这个页面 什么是Node选项? Node选项是指在运行Node.js应用程序时可以传递给Node.js进程的一系列命令行参数。这些选项可以让开发者控制Node.js的行为,例如设置内存限制、启用或禁用某些功能、指定调试端口等 --inspect 和 --i…

PyTorch3D 可视化

PyTorch3D是非常好用的3D工具库。但是PyTorch3D对于可用于debug(例如调整cameras参数)的可视化工具并没有进行系统的介绍。这篇文章主要是想介绍我觉得非常使用的PyTorch3D可视化工具。 1. 新建一个Mesh 从hugging face上下载一个glb文件,例…

内网穿透讲解

什么是内网穿透 内网穿透是一种网络技术,它允许外网或者其他局域网的用户来访问这个局域网的服务器资源,让资源的利用率更高,更加灵活,但是也要确保网络安全。 工作原理 如果你在公司,但是你需要使用到你家里的那台电…

Python中PyTorch详解

文章目录 Python中PyTorch详解一、引言二、PyTorch核心概念1、张量(Tensor)1.1、创建张量1.2、张量操作 2、自动求导(Autograd)2.1、自动求导示例 三、构建神经网络1、使用nn模块2、优化器(Optimizer) 四、…

Linux之网络配置

一、检查虚拟机和本机通不通 测试虚拟机和本机是否通不通 winR,运行本机cmd,输入ipconfig,拿到本机ip地址 在虚拟机上ping一下这个地址(ctrlshitv)可以把复制的文本粘贴进虚拟机。 可以看到,不通,解决方法在最后&am…

细说Flash存储芯片W25Q128FW和W25Q16BV

目录 一、Flash存储芯片W25Q128FW 1、W25Q128硬件接口和连接 2、存储空间划分 3、数据读写的原则 4、操作指令 (1)“写使能”指令 (2)“读数据”指令 (3)“写数据”指令 5、状态寄存器SR1 二、Fl…

33.攻防世界upload1

进入场景 看看让上传什么类型的文件 传个木马 把txt后缀改为png 在bp里把png改为php 上传成功 用蚁剑连接 在里面找flag 得到

鸿蒙元服务上架

鸿蒙元服务上架 一、将代码打包成 .app 文件1. 基本需求2. 生成密钥和证书请求文件3. 申请发布证书4. 申请发布Profile5. 配置签名信息6. 更新公钥指纹7. 打包项目成 .app 文件 二、发布元服务1. 进入应用信息页面2. 上传软件包3. 配置隐私协议4. 配置版本信息5. 提交审核&…

ansible自动化运维(二)playbook模式详解

相关文章ansible自动化运维(一)简介及清单,模块-CSDN博客ansible自动化运维(三)jinja2模板&&roles角色管理-CSDN博客ansible自动化运维(四)运维实战-CSDN博客 一.Ansible中的playbook模式 Playbo…

图像分割数据集海洋水体船只分割数据集labelme格式6123张3类别

数据集格式:labelme格式(不包含mask文件,仅仅包含jpg图片和对应的json文件) 图片数量(jpg文件个数):6123 标注数量(json文件个数):6123 标注类别数:3 标注类别名称:["water","sea_obstacle",&…

python爬虫知识

文章目录 安装requests安装BeautifulSoup4text函数 数据存储Excel操作操作Excel依赖安装 CSV文件操作 安装requests pip install requests安装BeautifulSoup4 pip install BeautifulSoup4示例: res requests.get(url,headersheaders)if res.status_code 200:bs…