3.2_1 虚拟内存的基本概念

3.2_1 虚拟内存的基本概念

image-20240315120645676

  虚拟存储技术也是存储空间扩充的一种技术,它比交换、覆盖技术要更先进一些。

image-20240315120856186

(一)传统存储管理方式的特征、缺点

image-20240315121013739

  对于这种传统的存储管理方案,很多暂时用不到的数据也会长期占用内存,导致内存利用率不高。

传统存储管理方式有两个很明显的特征

1.一次性

  作业必须一次性全部装入内存后才能开始运行。这会造成两个问题:

  ①作业很大时,不能全部装入内存,导致大作业无法运行

  比如一个大型游戏要60G内存,如果按照传统存储管理方式的话,一个4G运行内存的电脑是不可能运行这个游戏的。

  ②当大量作业要求运行时,由于内存无法容纳全部作业,因此只有少量作业能运行,导致多道程序并发度下降

2.驻留性

  一旦作业被装入内存,就会一直驻留在内存中,直至作业运行结束。事实上,在一个时间段内,只需要访问作业的一小部分数据即可正常运行,这就导致了内存中会驻留大量的、暂时用不到的数据,浪费了宝贵的内存资源。

  比如一个游戏中有很多个场景地图,我们的角色处于A场景中,其实只需要加载A场景相关资源就行了,而不需要加载B场景、C场景……。但是对于传统存储管理方式,不管是A、B、C场景……的数据,都要求一直驻留在内存当中,无论此时是否需要用到这些数据。就导致内存中驻留了大量的暂时用不到的数据,从而浪费内存资源。

  传统存储管理方式的这些缺点,都可用虚拟存储技术解决问题

(二)局部性原理

  虚拟存储技术的提出,其实是基于著名的局部性原理(之前在讲页式存储管理的快表机构的地方讲过)。

时间局部性

  如果执行了程序中的某条指令,那么不久后这条指令很有可能再次执行;如果某个数据被访问过,不久之后该数据很可能再次被访问。(因为程序中存在大量的循环)

空间局部性

  一旦程序访问了某个存储单元,在不久之后,其附近的存储单元也很有可能被访问。(因为很多数据在内存中都是连续存放的,并且程序的指令也是顺序地在内存中存放的)

(三)虚拟内存的定义和特征

  基于局部性原理,在程序装入时,可以将程序中很快会用到的部分装入内存,暂时用不到的部分留在外存,就可以让程序开始执行。

image-20240315125116749

  在程序执行过程中,当所访问的信息不在内存时,由操作系统负责将所需信息从外存调入内存,然后继续执行程序。

  若内存空间不够,由操作系统负责将内存中暂时用不到的信息换出到外存

  在操作系统的管理下,在用户看来似乎有一个比实际内存大得多的内存,这就是虚拟内存

  “虚拟内存”也是操作系统虚拟性的一个体现。实际的物理内存大小没有变,只是在逻辑上进行了扩充。


虚拟内存有以下三个主要特征

1.多次性

  无需在作业运行时一次性全部装入内存,而是允许被分成多次调入内存。

2.对换性

  在作业运行时无需一直常驻内存,而是允许在作业运行过程中,将作业换入、换出。

  这里的“多次性”和“对换性”,刚好就对应了传统存储管理方式当中的“一次性”和“驻留性”。

3.虚拟性

  从逻辑上扩充了内存的容量,使用户看到的内存容量远大于实际的容量。

(四)如何实现虚拟内存技术

  虚拟内存技术,允许一个作业分多次调入内存。如果采用连续分配方式,会不方便实现。

  因此,虚拟内存的实现需要建立在离散分配的内存管理方式基础之上。

image-20240315133612397

  之前学过的“离散分配”的传统的内存管理方式,有基本分页、基本分段、基本段页式。

  那么,在这三种“离散分配”的内存管理方式基础之上,就形成了与它们相对应的——请求分页、请求分段、请求段页式。

image-20240315133740687

  “传统的离散分配”和“虚拟内存”的主要区别在于:

  1.在程序执行过程中,当所访问的信息不在内存时,由操作系统负责将所需信息从外存调入内存,然后继续执行程序。

  因此,要在传统的基础之上增加功能:操作系统要提供**请求调页(或请求调段)**功能。

  2.若内存空间不够,由操作系统负责将内存中暂时用不到的信息换出到外存

  因此,要在传统的基础之上增加功能:操作系统要提供**页面置换(或段置换)**的功能。

  具体需要提供什么功能,如请求调页、请求调段;页面置换、段置换,要看你是“请求分页”、”请求分段“还是”请求段页式“。

总结

image-20240315134316911

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

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

相关文章

R 语言patchwork包拼图间隙

在R语言中,patchwork包是一个非常强大的工具,允许你轻松地将多个图表拼接在一起。如果你希望调整拼图间的间隙(即图表之间的空白区域),可以通过使用plot_layout()函数来实现,其中可以指定guides参数和spaci…

【数据结构和算法初阶(C语言)】栈的概念和实现(后进先出---后来者居上的神奇线性结构带来的惊喜体验)

目录 1.栈 1.1栈的概念及结构 2.栈的实现 3.栈结构对数据的处理方式 3.1对栈进行初始化 3.2 从栈顶添加元素 3.3 打印栈元素 3.4移除栈顶元素 3.5获取栈顶元素 3.6获取栈中的有效个数 3.7 判断链表是否为空 3.9 销毁栈空间 4.结语及整个源码 1.栈 1.1栈的概念及结构 栈&am…

Codeforces Round 933 (Div. 3)

比赛地址传送门 A. Rudolf and the Ticket 题目大意: 给定两个数组和一个 k,要求从两个数组中各选一个数求和不大于 k,有多少种方案 思路: 维护一个数组 f[i] 代表小于等于 i 的数字的数量,遍历另一个数组&#xff0…

遇到:java.lang.reflect.InaccessibleObjectException: Unable to make错误应该如何解决

遇到 "java.lang.reflect.InaccessibleObjectException: Unable to make" 错误是因为你的代码尝试访问了一个不可访问的对象或方法。这通常会发生在使用反射机制时,尝试访问私有或受限制的成员时。要解决这个问题,你可以考虑以下几个步骤&…

高压辊磨机(辊压机)在矿物加工领域应用广泛 目前本土企业处于向高端转型阶段

高压辊磨机(辊压机)在矿物加工领域应用广泛 目前本土企业处于向高端转型阶段 高压辊磨机又称为辊压机、挤压磨,是基于料层粉碎原理设计的一种干式辊磨设备。高压辊磨机结构形式多样,但原理基本相似,主要由机架、高压工…

浅谈C++绑定器bind1st、bind2nd和函数对象function

今天我们先来谈谈C 标准库里面的绑定器bind1st,bind2nd 和函数对象function C 绑定器和函数对象 一、绑定器二、函数对象 一、绑定器 虽然在C11标准中这两个绑定函数已经被弃用,但仍然值得我们深入思考其底层原理。从字面上理解,“绑定” 这…

【3】文件读写

Python 读取文件的三种常见方法 使用open()函数打开文件,并使用read()方法读取文件的内容。例如: file open("filename.txt", "r") content file.read() file.close()使用with语句打开文件,并使用readlines()方法读取…

Explain

Explain EXPLAIN是MySQL提供的一种用于分析SQL查询执行计划的工具,通过它我们可以深入了解数据库如何执行一条SQL语句,以及优化器在选择索引、访问表和排序数据等方面的决策。 我整理了一份思维导图方便更好查看各个参数的意义,红色表示比较…

RabbitMq踩坑记录

1、连接报错:Broker not available; cannot force queue declarations during start: java.io.IOException 2.1、原因:端口不对 2.2、解决方案: 检查你的连接配置,很可能是你的yml里面的端口配置的是15672,更改为5672即…

css超出部分显示省略号

目录 前言 一、CSS单行实现 二、CSS多行实现(CSS3出的,兼容性需要注意) 三、微信小程序超过2行出现省略号实现 四、JavaScript脚本实现 前言 CSS文本溢出就显示省略号,就是在样式中指定了盒子的宽度与高度,有可能出现某些内…

LLM - 大语言模型(LLM) 概述

欢迎关注我的CSDN:https://spike.blog.csdn.net/ 本文地址:https://blog.csdn.net/caroline_wendy/article/details/136617643 大语言模型(LLM, Large Language Model)的发展和应用是一个非常广泛的领域,涉及从早期的统计模型到现代基于深度学…

【AI+CAD】(二)LLM和VLM生成结构化数据结构(PPT/CAD/DXF)

当前LLM和VLM在PPT生成任务上已经小有成效,如ChatPPT。 @TOC 1. PPT-LLM LLM根据用户的instruction生成规范的绘制ppt的API语句:即使是最强的GPT-4 + CoT也只能达到20-30%的内容准确度。 LLM输入:User_instruction(当前+过去)、PPT_content、PPT_reader_API。其中 PPT_rea…

Pandas教程16:DataFrame列标题批量重命名+空df数据判断+列名顺序重排

---------------pandas数据分析集合--------------- Python教程71:学习Pandas中一维数组Series Python教程74:Pandas中DataFrame数据创建方法及缺失值与重复值处理 Pandas数据化分析,DataFrame行列索引数据的选取,增加&#xff0c…

Latex 超长矩阵如何处理显示问题

问题 矩阵内容太多,不能完全显示。下面是我的处理方法。 双栏论文中矩阵跨栏显示 使用 \begin{figure*}给公式包起来,跨双栏 \begin{figure*}[t]\begin{equation}T_{PRY} \left[% \setlength\arraycolsep{2.5pt}\begin{array}{cccc}A & B …

面试经典150题——随机链表的复制

​前两天断更了两天有点事情🤗 1. 题目描述 2. 题目分析与解析 2.1 思路一 开始还是没什么思路,没思路那就先把题目解决不管方法的好坏。如果不考虑复杂度,该怎么解决? 可以有这样的一种思路: 首先复制链表的所有节…

【python绘图】turle 绘图基本案例

文章目录 0. 基础知识1. 蟒蛇绘制2. 正方形绘制3. 六边形绘制4. 叠边形绘制5. 风轮绘制 0. 基础知识 资料来自中国mooc北京理工大学python课程 1. 蟒蛇绘制 import turtle turtle.setup(650, 350, 200, 200) turtle.penup() turtle.fd(-250) turtle.pendown() turtle.pen…

jeesite列表jqGrid表格底部汇总,基于onSelectRow和onSelectAll实现选中行汇总合计

一、最终效果图 二、表格启用复选框并初始化赋值 onSelectAll: function() { calc_sum(); }, onSelectRow: function() { calc_sum(); },// 加载成功后执行事件 ajaxSuccess: function(data){var dy = 0;var glbzqmrsdtyg = 0;var glbzqmrsschyg = 0;var glbzqmrsqtcy …

【贪心算法】Leetcode 55. 跳跃游戏

【贪心算法】Leetcode 55. 跳跃游戏 解法1解法2 ---------------🎈🎈55. 跳跃游戏 题目链接🎈🎈------------------- 解法1 关键点在于:不用拘泥于每次究竟跳几步,而是看覆盖范围,覆盖范围内…

Python 语法及入门 (超全超详细) 专为Python零基础 一篇博客让你完全掌握Python语法

前言: 本篇博客超级详细,请尽量使用电脑端结合目录阅读 阅读时请打开右侧 “只看目录” 方便阅读 一、什么是Python 1.1 Python的诞生 1989年,为了打发圣诞节假期,Gudio van Rossum吉多 范罗苏姆(龟叔)决…

Qt自定义标题栏的多屏适配

标题栏自定义 参考博客 : https://blog.csdn.net/goforwardtostep/article/details/53494800 多屏适配 MyTitleBar类抽象定义了自定义标题栏,使用起来相对方便。但是在多屏情况下,窗口初次显示只能在主屏幕上,如果拖到其他屏幕…