虚拟存储器-11.1

news/2024/4/20 18:28:29/文章来源:https://blog.csdn.net/weixin_41957626/article/details/127636085

虚拟存储器-11.1

1.虚拟存储器概述

1.1局部性原理

1.程序的局部性原理:程序在运行的时候局限在某个局部的地方。

2.虚拟存储器的工作基本情况

  • 运行时在内存
  • 运行时不在内存
  • 需要时调入内存
  • 不需要调出内存

2.虚拟存储器实现的方法

2.1请求分页技术

2.1.1思想

分页:

  • 运行时只装入当前需要运行的界面
  • 运行后动态装入其他的页面
  • 满的话淘汰某个页面

2.1.2数据结构

  • 页号
  • 状态位:0代表不在内存,1代表调入内存。判断是不是调入了内存中。
  • 内存块号:内存中的地址块号。
  • 外存地址:页在外存中的地址。
  • 修改位:调入内存后是不是被修改过。
    • 当发生置换的时候,回写。
    • 当不发生置换的时候,不回写。
  • 访问位:作为页面置换算法的依据。

2.1.3缺页中断

缺页中断可以发生在程序执行的过程中,但是一般的程序的中断都是发生在程序执行完之后才会发生的。

1.缺页中断和一般的中断的区别

相同点:

  • 都是中断
  • 保护现场 中断处理 恢复现场

不同点:

  • 一般中断是一条指令完成后中断,缺页中断是一条指令执行时中断
  • 一条指令执行时可能产生多个缺页中断。如指令可能访问多个内存地址,这些地址在不同的页中。

2.缺页中断的过程

当某一条指令找对应的页号的时候没有找到,就会发生缺页中断。

发生缺页->缺页中断(将当前要执行的程序挂起,调用缺页中断程序)->采用某种置换算法,将缺页的调入内存->恢复现场(唤醒中断的程序)

3.中断处理的特例:

涉及到6次中断的过程。

原因:一条指令在两个页面中,指定一条指令都会置换两次。

2.2请求分页技术内存分配

2.2.1内存分配策略

可变分区的全局置换是用的次数最多的。

1.内存分配策略

  • 固定分区
    • 分区太多:老是出现缺页中断
    • 分区太少:造成CPU或其他资源的浪费
  • 可变分区

2.内存置换策略

  • 局部置换
  • 全局置换

2.2.2物理块的分配算法-基于固定分区分配策略

1.物理块的分配算法-基于固定分区分配策略

  • 平均分配:按照进程的数目进行平局的分配
  • 按比例分配:用的最多。按照进程的大小进行分配。
  • 基于优先权的分配:先按照比例进行分配,再去按照对应的优先级进行分配。优先级高的进程对应的份额多一点。

2.3页面调入策略

就是事先调入内存中的部分程序和数据。

2.3.1何时调入

1.何时调入

  • 预调页策略:50%。
  • 请求调页策略:常用,容易实现的。但是每次调入一页,系统的开销是比较大的。

2.3.2何处调入

1.常见的调入的三种情况

  • 对换空间足够大:把所有的页面放入对换区。
  • 对换空间不够大:
    • 不会修改的放到文件区
    • 已经修改放到对换区
  • UNIX方式:
    • 未运行过的放到对换区
    • 曾经运行但是被对换出的页面,下次调入的时候还是从对换区调入

2.3.3如何调入

调入的过程就是发生缺页中断处理的过程

发生缺页->缺页中断(将当前要执行的程序挂起,调用缺页中断程序)->采用某种置换算法,将缺页的调入内存->恢复现场(唤醒中断的程序)

2.3.4缺页率

1.缺页率的计算公式

  • f=F/A
    • f:缺页率
    • F:缺页的次数
    • A:缺页的次数+成功的次数

2.4页面置换算法

1.常见的5中页面置换的算法

  • 理想淘汰算法—最佳页面算法(OPT)
  • 先进先出页面淘汰算法(FIFO)
  • 最近最久未使用页面淘汰算法(LRU)
  • 最不经常使用(LFU)
  • 页面缓冲算法 (PBA)

2.4.1最佳页面算法(OPT)

算法简介,只是一种最理想话的算法。具有最好的性能但是最难实现。将永不使用的和长时间最不会被访问到的调出内存。

作用:可以用来评价其余算法的好坏。

注意点:如果预先装入内存的话,算是命中。没有预先装入的就算是失败的。

案例:

假定系统为某进程分配了三个物理块, 并考虑有以下的页面号引用串:

  • 7,0,1,2,0,3,0,4,2,3,0,3,2,1,2,0,1,7,0,1
  • 进程运行时, 先将7,0,1三个页面装入内存。(预先装入内存中)

内存分配图如下:

所以:缺页率为:30%

期待下期再见!ヾ(•ω•`)o

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

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

相关文章

python标记删除如何实现?

python标记删除如何实现? 说明 1、主要解决循环引用的数据。因为引用大于0,不会回收。 2、标记删除是为了解决这个循环引用不能删除的问题。 3、对于删除操作后的每一个引用-1,此时num,num1的引用为0,将其放入死亡容器中&#…

VSCode下载安装与使用教程

目录1. 打开官网进行下载安装2. 下载3. 安装4. 使用4.1 extensions4.2 Python编译器4. 运行python代码的 3 种方法参考资料VSCode是一款免费开源的现代化轻量级代码编辑器,下面就简单的带大家一起来下载和安装VSCode。 1. 打开官网进行下载安装 官方下载链接&…

设计模式系列之MVC模式

这里写自定义目录标题1、设计模式概要最基本的设计模式使用设计模式的好处2、MVC模式MVC实例:模型 models.py视图views.py控制器 Controller.py3、优缺点总结1、设计模式概要 定义: 设计模式是由众多的软件开发人员经过长期的积累,不断试错改…

uniapp老项目添加自动化部署并配置多环境

我司其他项目都是通过jenkins打包部署的,只有uniapp项目要前端通过hbuilderx手动打包上传到git,为了方便操作,改造老项目! 创建一个新的uniapp项目 参考:https://uniapp.dcloud.net.cn/quickstart-cli.html 安装vue…

顺应国家趋势,争做爱国程序员

当今社会,为了不再使我国面临“缺芯”的情况下,先进计算技术逐渐成为我国的发展趋势。 那,何为先进计算? 百度百科的定义为:先进计算包括超级计算、大数据、人工智能、云计算等多种新兴IT信息技术,先进计…

仿iPhone开关按钮switch

前端开发checkbox 单选按钮做开关https://github.com/weatherstar/switchgithub下载 渲染事件方法 defaults { size : ‘default’ , checked : undefined , onText : ‘Y’ , offText : ‘N’ , onSwitchColor : ‘#64BD63’ , offSwitchColor : ‘#fff’ , onJackColor : ‘…

html实现飞机小游戏(源码)

文章目录1.思路讲解1.1 游戏设计1.2 主界面1.3 倒计时进入游戏1.4 游戏效果1.3 游戏结束2.实现源码2.1 游戏动态效果2.2 游戏主代码2.3 源码目录源码下载作者:xcLeigh 文章说明 html实现飞机大战源码,酷炫的界面效果,有四款飞机大战背景&…

2022高频经典前端面试题(es6+webpack+http网络+性能优化中篇,含答案)

ES6篇 1. ES6的新特性?(必考) 参考阮一峰的es6文档:https://es6.ruanyifeng.com/ let、const变量的解构赋值模板字符串(可以直接进行变量拼接)箭头函数… 展开运算符可以将数组或对象里面的值展开;还可以…

面试被问到如何排查JVM问题的,如何回答?

一、首先说可用工具 1、jmap可以查看当前Java进程的内存占用,把内存快照dump出来 用法:jmap [option] <pid> 常用命令jmap -heap pid 主要显示堆的内存使用情况,包括分代情况,每个代的总容量、已使用内存、可使用内存,如图: jmap -dump:live,format=b,file=xxx…

发第一篇SCI有哪些技巧?

正所谓万事开头难&#xff0c;每当第一次做某一件事情总是难以开展的。因为那时我们没有一定的方法和技巧去完成这些事。比如 SCI论文是无数科研人员认可的学术文献&#xff0c;但是想要在SCI期刊上发表论文是十分困难的&#xff0c;因为在论文创作上尚且不成熟&#xff0c;没有…

大学毕业1年,从监工转行软件测试,我拿到了人生第一份8k的offer

大家好&#xff0c;我是小静&#xff0c;是一名IT转行人&#xff0c;2015年毕业于某所XXXX大专&#xff0c;大学学的专业是土木工程&#xff0c;毕业也是不出意外的来到了工地&#xff0c;从事的是一份监工的工作&#xff0c;就是工地上带白帽子的&#xff0c;每个月拿着4000块…

js 之reduce 方法实现数组去重原理分布解析

需求 &#xff1a;当有一个数组对象 我们需要根据数组对象的某个属性进行去重 此时我们用reduce最合适不过 let alin [{id : 001 ,name : 小红},{id : 002 ,name : 小黄},{id : 001 ,name : 小红},]function arrRemoveRepet(arr) {let newArr []; // 去重后得到的新数组con…

生成新冠疫苗接种趋势图-技术和法律学习

生成新冠疫苗接种趋势图-技术和法律学习文档说明:只记录关键地方; 缘由:想看疫苗接种趋势图,我要去哪里找呢?奈何公开的渠道没有找到!自己做一个呗数据来源: http://www.nhc.gov.cn/xcs/xxgzbd/gzbd_index.shtml (信息来自国家卫生健康委员会官方网站) 我要怎么得到数据呢…

靶机20 driftingblues3

描述: __________ 获取标志 难度&#xff1a;简单 1、下载靶场 靶机名称&#xff1a;driftingblues 下载地址&#xff1a; DriftingBlues: 3 ~ VulnHub 2、安装靶场 以DC-1为例&#xff0c;将文件解压&#xff08;一压缩包形式进行下载&#xff09;。 打开虚拟机&#xff0c;选…

K8S二进制部署之定义CA证书与ETCD

文章目录CA证书制作K8S集群证书流程K8S 二进制集群部署K8S二进制部署ETCD集群部署1、docker部署&#xff08;所有节点&#xff09;ETCD集群部署master节点操作小结&#xff1a;查看etcd 启动脚本创建ca证书创建cfssl类型工具下载脚本到node节点修改CA证书 CA证书中包含密钥对 …

浅谈 web3

web3——互联网的未来? web3,很多人觉得是个骗局,是在割韭菜。因为大部分介绍 web3 的文章都离不开 NFT、数字货币、区块链、比特币、以太坊、元宇宙等概念,玄之又玄,脱离我们的生活,没解决我们的痛点。一般文章最后还教给我们怎么炒币,怎么买卖 NFT,妥妥的割韭菜套路,…

顺序结构综合练习

顺序结构综合练习 数学头文件#include<cmath> 幂函数 pow10(x)结果等于10^x pow()函数是cmath标头的库函数,用于查找幂的加数。计算x的y次方 pow()函数语法:pow(x,y); #include<cstdio>// main(){int a,b,c;scanf("%d%d",&a,&b);//格式化…

长时间久坐危害竟然这么大,这4项检查,男性朋友一定要定期查

对于男性而言&#xff0c;生殖系统健康尤为重要&#xff0c;但很多人却并不是那么重视&#xff0c;家住昆山的小王就是其中一员&#xff0c;作为一名程序员的他&#xff0c;上班坐着&#xff0c;上班路上坐着&#xff0c;下班路上也是坐着&#xff0c;回家更是坐着。小伙身体棒…

Bootstrap概述和Bootstrap快速入门

Bootstrap概述 1.概念:一个前端开发的框架,Bootstrap,来自Twitter,是目前很受欢迎的前端框架。Bootstrap是基于HTML、CSS、JavaScript的,它简洁灵活,使用得Web开发更加快捷。框架:一个半成品软件,开发人员可以在框架基础上,在进行开发,简化编码。好处:1.定义了很多的…

css 居中

阅读目录水平居中垂直居中垂直居中: position 绝对定位演示垂直居中: flex 演示垂直居中: transform 演示水平&垂直居中flex 1flex 2position水平居中 1 行内块居中 设置父元素的 text-align: center 2 块级元素 设置当前块级元素(宽度) margin: 0 auto; 3 绝对定位 元素…