当前位置: 首页 > news >正文

虚拟存储器“大观”,讲解核心逻辑知识和408大题方法

虚拟存储器

写在前面:虚拟存储器(Virtual Memory)是计算机系统中用于管理内存的一种技术,它通过虚拟地址空间为进程提供比物理内存更大的地址空间,同时实现内存保护和进程隔离。

在408整个体系中计组和操作系统都有涉及,但是我希望同学们在学习这部分知识的时候,一定要在学习操作系统的时候去学习,至少你要先搞清楚基本分页存储管理的思想,否则你是没办法深入理解虚拟存储器的,不理解原理就更不要谈做对题目了,我希望大家不要考记忆、熟练度去做题,而需要真正的尝试去理解它,掌握本质,才能以不变应万变。这也是我做这个“大观”视频的初衷。

基本分页存储管理

虚拟存储器的核心就是通过地址转换机制,将程序使用的虚拟地址映射到实际的物理内存地址,我们需要先理解基本分页存储管理的思想(这一块是操作系统内存管理的内容,是虚拟存储器的一种实现方式)。这里请和Cache与主存交换数据的方式类比学习,因为思想都是一样的,没有搞明白的Cache的原理的一定要去看一下我的Cache“大观”那个视频,我这里默认大家已经掌握了Cache的思想。那么我们进入正题。

引入:当一个程序被装入内存的时候不是把它整块装入一个连续的区域,那么是怎么分配的呢?先来基本原理涉及的概念,不懂原理不要做题!!这也是为什么我给基础概念三颗星的原因。

重要概念⭐⭐⭐

1)重要概念理解

  1. 物理页面:物理内存划分为很多大小固定的存储块(类比Cache块

  2. 逻辑页面:把逻辑页面划分为大小相同的快,和物理页面是一样大的!!(因此我们才能以页面为单位来分配。我们再来回顾一下Cache,Cache块和主存块的大小也是一样大的)

  3. 页与块:这里大家初学肯定会有这个疑惑,我们教材书一会说页,一会说块,到底怎么分辨?

    1. Cache块是Cache与主存之间交换信息的单位,大小一般为32B
    2. 页是主存与外存之间交换信息的单位,大小一般为4KB,也就是一个页包含了多个块!!
  4. 逻辑地址的划分:请务必记住,逻辑地址被划分为两部分,高位部分为页号,低位部分为页内地址(这是我们做题的逻辑基点,同样的我们又要和Cache联系起来学习,还记得Cache映射的主存地址是怎么划分的吗?是不是也是把高位划分为主存块号,低位为块内地址!!)

  5. 页表(在主存内):每一个进程都有一个页表,我们把页表理解成一个大的数组,它的本质就是进行逻辑页号和物理页号之间的映射(一个逻辑页号对应一个物理页号),也就是我们把逻辑地址转成物理地址的必要工具(后面会详细讲解映射方法),请看王道教材的这个图:

    在这里插入图片描述

    可以看出页表就是记录了逻辑页(虚页)和物理页之前的转换,从而可以定位到主存的页,没别的了!

地址映射(⭐⭐)

1)定义:所谓映射就是把虚拟地址映射成物理地址,分为以下步骤

  • 给出一个逻辑地址,我们先通过上述逻辑地址划分方式,找到逻辑页面号与页内的偏移地址

  • 我们拿到了逻辑页面号,就去查页表找到它的物理号(也有的教材叫页框号)

  • 根据物理号与偏移地址拼起来,就得到了最终我们需要的物理地址

    在这里插入图片描述

    怎么拼?如图所示,就是把页号写前面,页内地址(偏移量)写在后面,很简单!!

    这就是计算题的方法,理解了上面我说的,那么这类题目对于你来说就是洒洒水了。

2)具有快表(TLB)的变换

我们想一下,我们之前只有页表的时候,是不是必须要去访存,因为页表在内存里,那么我们是否可以扩展一下思路,把页表的内容存储在一个更快更牛逼的存储器里,因此我们的快表就应运而生了。

CPU就在Cache里去设置了一个高速存储器来存储页表的部分内容,TLB采用相联存储器组成,按照内容访问,速度极快!!(为什么是部分不是全部?毕竟他很快,那么他就要牺牲一些东西,也就变小了一些!)

有了TLB,我们就可以避免一次访存,而优先去快表中找到物理页号,从而大大减少了我们的访存时间、提高我们取出数据的效率!!

有了上面的知识,我们就能引出虚拟页式存储管理到底是个啥了!!!

虚拟页式存储管理

1)核心概念:虚拟页式存储管理就是在页式管理的基础上,增加了请求调页等一些功能!!这里大家就能明白了,为什么我要先将本应该在操作系统里学的知识了吧,没有页式存储管理的知识,你根本没法搞明白什么是虚拟存储管理!

2)核心操作:在程序运行过程中,如果我们CPU发出的指令想要访问的数据不在内存里面,我们就发出一个缺页中断请求,系统就把外存中的相应页面给调进入到内存,这就是请求调页!

3)有同学可能会问为什么会发生缺页?因为逻辑地址是远大于物理内存地址的(不然我们也没必要引出虚拟存储器了),那么带来的结果必然就是只能把部分常用的页面装入内存,而不能全部装进去,那就会出现缺页的场景了。

4)MMU:我们在做题的时候可能会碰到MMU这个概念,它的中文名叫做内存管理单元,是一个硬件!**它的主要功能就是把虚拟地址映射出物理地址。**如果页面不在内存里,MMU就发出一个缺页中断,让操作系统去处理这个缺页中断。至于一些太过于细节性的概念,比如页表项去判断页面是否在内存那些东西,就需要同学们自己去看一下基础课了,我的目的就是带大家串联知识,达到一个深入理解的效果,而这个目标是建立在你有基础的前提上的,还有对于Cache有问题的同学一定要去我主页看一下那个视频。

总结一下:CPU发出一个虚拟地址,首先由MMU进行虚拟地址到物理地址的转换(这期间可能会涉及缺页处理),然后再由处理Cache的硬件根据这个物理地址去访问(物理地址和Cache的映射),如果Cache中没有找到,就要进行Cache缺失的处理,然后去访存拿到数据。请看下图:

在这里插入图片描述

这张图就是总结了我上面所讲的所有东西了,好好理解清楚它,那么你对于带有虚拟存储器和Cache的系统就已经很透彻了,之后就是通过习题的训练来加深自己的理解。

题目讲解

在这里插入图片描述
视频跳转:【计组|虚拟存储器】带你狠狠拿捏虚拟存储器,不再害怕408大题!

相关文章:

虚拟存储器“大观”,讲解核心逻辑知识和408大题方法

虚拟存储器 写在前面:虚拟存储器(Virtual Memory)是计算机系统中用于管理内存的一种技术,它通过虚拟地址空间为进程提供比物理内存更大的地址空间,同时实现内存保护和进程隔离。 在408整个体系中计组和操作系统都有涉…...

【AI赋能医学】基于深度学习和HRV特征的多类别心电图分类

一、数据集简介 论文中使用了来自三类不同心电图记录的162条数据,这些数据来自三个公开的数据库: MIT-BIH 心律失常数据库 (ARR) 96条记录,主要包含不同类型的心律失常样本。 MIT-BIH 正常窦性心律数据库 (NSR) 36条记录,包含健…...

速盾:做外贸用高防cdn需要国外节点的吗?

在进行外贸业务时,使用高防CDN(Content Delivery Network)可以带来很多好处,如提高网站的访问速度、降低服务器负载、保护网站安全等。然而,是否需要国外节点的高防CDN则取决于具体的需求和情况。 高防CDN是通过在全球…...

单片机中为什么要使用5v转3.3v,不直接使用3.3V电压

5V和3.3V是常见的电压水平,在技术上都有其特定的应用场景。为了保护电路、提升效能和确保系统的稳定运行,经常需要将5V转换为3.3V。 1.为什么要5V来供电 使用5V是因为部分传感器需要5V的供电,并且我们数据线一般都输出5V电压,而…...

SpringBoot项目请求返回json空字段过滤

接口返回的json中有的字段可能是为空的,我们不希望他为空的还返回,如下例子: 解决方案:只需要加一个配置类就行: import com.fasterxml.jackson.annotation.JsonInclude; import com.fasterxml.jackson.databind.Dese…...

linux下进程详解

在 Linux 系统中,进程是计算机执行程序的基本单位。理解进程的概念和管理方法对系统管理员和开发者都非常重要。下面是对 Linux 下进程的详细介绍: 进程的基本概念 进程:进程是程序在计算机上执行的一个实例。每个进程都有自己独立的内存空间…...

春招审核流程优化:Spring Boot系统设计

1系统概述 1.1 研究背景 随着计算机技术的发展以及计算机网络的逐渐普及,互联网成为人们查找信息的重要场所,二十一世纪是信息的时代,所以信息的管理显得特别重要。因此,使用计算机来管理大学生入学审核系统的相关信息成为必然。开…...

QT:音视频播放器

目录 一.播放器设计 二.需要使用的控件 三.选择视频 四.播放视频 五.暂停视频 六.关闭视频 七.播放状态设置 八.切换视频(上一首) 九.切换视频(下一首) 十.设置视频滑块 十一.更新滑块显示 十二.实现效果 十三.代码设计 1.mainwindow.h 2.mainwindow.cpp 一.播放…...

大模型入门 ch 03:注意力机制

本文是github上的大模型教程LLMs-from-scratch的学习笔记,教程地址:教程链接 Chapter 3: Attention Mechanism 本文首先从固定参数的注意力机制说起,然后拓展到可以训练的注意力机制,然后加入掩码mask,最后…...

STM32点亮第一个LED

还有第二个,并轮换。 准备入门STM32,于是拿出了买到手至少2年的洋桃M1板子,STM32F103C8T6 配置有3个LED,3个按钮,RS232,RS485,CAN,有JTAG,有RTC电池,IO口引…...

[Linux]:动静态库

✨✨ 欢迎大家来到贝蒂大讲堂✨✨ 🎈🎈养成好习惯,先赞后看哦~🎈🎈 所属专栏:Linux学习 贝蒂的主页:Betty’s blog 1. 动静态库的介绍 一般而言,库分为动态库和静态库。 在Linux当中…...

windows 显示进程地址空间

windows 显示进程地址空间 windows 显示进程地址空间 文章目录 windows 显示进程地址空间显示进程地址空间 显示进程地址空间 /* 3-ProcessInfo.cpp 显示进程地址空间 */#include "..\\CommonFiles\\CmnHdr.h" #include "..\\CommonFiles\\Toolhelp.h"#i…...

Android 12 SystemUI下拉状态栏禁止QuickQSPanel展开

1.概述 遇到需求,QuickQSPanel首次下拉后展示快捷功能模块以后就是显示QuickQSPanel,而不展开QSPanel,接下来要从下滑手势下拉出状态栏分析功能实现。也就是直接是展开状态。 2、涉及核心类 frameworks\base\packages\SystemUI\src\com\and…...

二分思想与相关问题(下)

接下来详细讲解几道比较难的例题,仔细体会二分和其他概念混合在一起的趣味。 下面这道题涉及了“碎片拼接”的概念,很妙,也很难想。 P r o b l e m 5 Problem5 Problem5 同时运行N台电脑的最长时间 LeetCode2141 你有 n 台电脑。给你整数 n…...

【算法专题】搜索算法

二叉树剪枝 LCR 047. 二叉树剪枝 - 力扣(LeetCode) 本题要求我们将全部为0的二叉树去掉,也就是剪枝,当我们举一个具体的例子进行模拟时,会发现,只关注于对其中一个子树的根节点进行剪枝,由于我…...

B2064 斐波那契数列

题目描述 斐波那契数列是指这样的数列:数列的第一个和第二个数都为 11,接下来每个数都等于前面 22 个数之和。 给出一个正整数 aa,要求斐波那契数列中第 aa 个数是多少。 输入格式 第 11 行是测试数据的组数 nn,后面跟着 nn 行…...

Spark的介绍

一、分布式的思想 不管是数据也好,计算也好,都没有最大的电脑,而是多个小电脑组合而成。 存储:将3T的文件拆分成若干个小文件,例如每500M一个小文件,将这些小文件存储在不同的机器上 。 -- HDFS 计算&#…...

SpringBoot项目是如何启动

启动步骤 概念 运行main方法,初始化SpringApplication 从spring.factories读取listener ApplicationContentInitializer运行run方法读取环境变量,配置信息创建SpringApplication上下文预初始化上下文,将启动类作为配置类进行读取调用 refres…...

科技之光,照亮未来之路“2024南京国际人工智能展会”

全球科技产业的版图正以前所未有的速度重构,而位于中国东部沿海经济带的江浙沪地区,作为科技创新与产业升级的高地,始终站在这一浪潮的最前沿。2024年,这一区域的科技盛宴——“2024南京人工智能展会”即将在南京国际博览中心盛大…...

在深度学习计算机视觉的语义分割中,Boundary和Edge的区别是?

在深度学习中的计算机视觉任务中,语义分割中的 Boundary 和 Edge 其实有一些相似之处,但它们的定义和使用场景略有不同。下面是两者的区别: 1. Boundary(边界) 定义:Boundary 是指一个对象或区域的边界&a…...

【JAVA入门】Day41 - 字节缓冲流和字符缓冲流

【JAVA入门】Day41 - 字节缓冲流和字符缓冲流 文章目录 【JAVA入门】Day41 - 字节缓冲流和字符缓冲流一、缓冲流的体系结构二、字节缓冲流2.1 字节缓冲流提高效率的底层原理 三、字符缓冲流 在IO流体系中,FileInputStream,FileOutputStream,F…...

collocate join,bucket join,broadcast join,shuffle join对比分析

在分布式计算和大数据处理中,尤其是在使用像 Apache Spark、Hive 等大数据处理框架时,Join 操作是非常常见的。根据数据分布方式和执行机制,Join 操作可以分为不同的类型,如 Collocate Join、Bucket Join、Broadcast Join 和 Shuffle Join。以下是它们的详细对比分析: 1.…...

微信自动通过好友和自动拉人进群,微加机器人这个功能太好用了

又发现一个好用的功能,之前就想找一个这种工具,现在发现可以利用微加机器人的两个功能来实现,分别是加好友和关键词拉群 首先 微加机器人的专业版 > 功能 > 加好友设置 可以设置一个关键词通过,这样别人加好友的时候只需要输入制定内…...

R语言统计分析——功效分析3(相关、线性模型)

参考资料:R语言实战【第2版】 1、相关性 pwr.r.test()函数可以对相关性分析进行功效分析。格式如下: pwr.r.test(n, r, sig.level, power, alternative) 其中,n是观测数目,r是效应值(通过线性相关系数衡量&#xff0…...

Django创建模型

1、根据创建好应用模块 python manage.py startapp tests 2、在models文件里创建模型 from django.db import modelsfrom book.models import User# Create your models here. class Tests(models.Model):STATUS_CHOICES ((0, 启用),(1, 停用),# 更多状态...)add_time mode…...

盘点2024年大家都在用的短视频剪辑工具

你现在休息的时间是不是都靠短视频来消遣?看着看着你就会发现短视频制作好像我也可以了吧?这次我就介绍一些简单好操作的短视频剪辑工具。 1.FOXIT视频剪辑 连接直达>>https://www.pdf365.cn/foxitclip/ 短视频剪辑其实也不难,只需…...

“左侧文字横向”的QTabWidget

左侧用 QToolButton 组, 右侧用 QStackedWidget,信号槽绑定切换页面 可定制化高 QButtonGroup* btnGp new QButtonGroup(this);btnGp->addButton(ui->btn1, 0);btnGp->addButton(ui->btn2, 1);btnGp->addButton(ui->btn3, 2);connect…...

python学习之字符串操作

str python # 定义一个字符串变量 print(id(str))print(str) # 打印整个字符串 print(str[0:-1]) # 打印字符串第一个到倒数第二个字符(不包含倒数第一个字符) print(str[0]) # 打印字符串的第一个字符 print(str[2:5]) # 打印字符串第三到第…...

第7篇:【系统分析师】计算机网络

考点汇总 考点详情 1网络模型和协议:OSI/RM七层模型,网络标准和协议,TCP/IP协议族,端口 七层:应用层,表示层,会话层,传输层,网络层,数据链路层,…...

无人机培训机构组装调试技术详解

一、基础知识学习 在进入无人机组装调试领域之前,扎实的基础知识是不可或缺的。学员需掌握以下内容: 1. 无人机基本原理:了解无人机的飞行原理,包括升力、推力、重力和阻力等基本物理概念,以及无人机的飞行控制系统&…...