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

news2024/11/24 15:25:05

虚拟存储器

写在前面:虚拟存储器(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大题!

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

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

相关文章

飞书项目管理使用攻略

文章目录 项目管理项目管理的方法和工具项目管理方法:项目管理工具 飞书项目管理平台 创建空间需求管理缺陷管理人员排期飞书也可以创建敏捷开发管理. 项目管理 项目管理是指在项目活动中运用专门的知识、技能、工具和方法,使项目能够在有限资源限定条件…

自动化立体仓库定义及使用范围

导语 大家好,我是社长,老K。专注分享智能制造和智能仓储物流等内容。 新书《智能物流系统构成与技术实践》人俱乐部 这份文件是关于自动化立体仓库的定义、发展、组成、技术性能、应用领域、供货方式以及设计步骤的详细介绍。以下是核心内容的概要&#…

基于Qt的自定制WPS

前言 正文 项目实现:项目实现了文件的新建,打开,保存,另存为,以及字体的设置,字体加粗,字体倾斜,字体颜色,还有对齐方式等功能 项目效果: ​ 项目地址&…

企业微信应用消息收发实施记录

一、前置配置 1.1 进入我的企业页面,记录下企业ID。 1.2 创建企微应用,记录下应用的 AgentId 和 Secret。 1.3 设置应用的企业可信IP,将服务器公网 IP 填入即可。 1.4 设置应用接收消息API 填入服务器 API 地址,并记录下随机获取…

PAT甲级-1012 The Best Rank

题目 题目大意 学生有C、M、E三个成绩,A是这三个成绩的平均值。要求对每个学生的C、M、E、A分别排名,取这4项的最高排名为最优排名。如果一个学生有多项排名一样,按照A > C > M > E的优先级输出最优排名。 输入给出学生人数和查询…

派遣函数-编写一个更通用的派遣函数

前面介绍的派遣函数处理过于简单,下面带领读者对派遣函数一步步进行扩充。首先介绍一个重要数据结构--IO_STACK LOCATION,即I/O堆栈,这个数据结构和IRP紧密相连。 在前面,曾经介绍过驱动程序的层次结构。驱动对象会创建一个个的设备对象, 并将…

前端单独实现 vue 动态路由

前端单独实现 vue 动态路由 Vue 动态路由权限是指在 Vue 应用程序中,根据用户的权限动态生成和控制路由的行为。这意味着不是所有的路由都在应用启动时就被硬编码到路由配置中,而是根据用户的权限信息,在运行时动态地决定哪些路由应该被加载…

3. 轴指令(omron 机器自动化控制器)——>MC_PowerMC_MoveJog

机器自动化控制器——第三章 轴指令 1 MC_Power变量▶输入变量▶输出变量▶输入输出变量 功能说明▶时序图▶重启运动指令▶多重启动运动指令▶错误代码 MC_MoveJog变量▶输入变量▶输出变量▶输入输出变量 功能说明▶时序图▶重启运动指令▶多重启动运动指令▶异常 MC_Power …

从0书写一个softmax分类 李沐pytorch实战

输出维度 在softmax 分类中 我们输出与类别一样多。 数据集有10个类别,所以网络输出维度为10。 初始化权重和偏置 torch.norma 生成一个均值为 0,标准差为0.01,一个形状为size(num_inputs, num_outputs)的张量偏置生成一个num_outputs 10 的一维张量&a…

1265:【例9.9】最长公共子序列 动态规划

题目链接 题目: 思路 最长-最值问题、重叠子问题、最优结构-前面序列的公共序列最优值是后续序列的子问题、无后效性也满足 确定状态、变量:序列是没有要求要连续,因此只能用长度为i的串a分别和长度为(1-j)串b去找最值…

【Linux】:信号与信号产生

朋友们、伙计们,我们又见面了,本期来给大家带来信号和信号的产生相关代码和知识点,如果看完之后对你有一定的启发,那么请留下你的三连,祝大家心想事成! C 语 言 专 栏:C语言:从入门到…

HarmonyOS开发实战( Beta5.0)日历切换案例实践详解

鸿蒙HarmonyOS开发往期必看: HarmonyOS NEXT应用开发性能实践总结 最新版!“非常详细的” 鸿蒙HarmonyOS Next应用开发学习路线!(从零基础入门到精通) 介绍 本示例介绍使用Swiper实现自定义日历月视图和周视图左右滑…

反编译app

反编译代码步骤: 1.用dex2jar 将apk打成jar,d2j-dex2jar your-app.apk GitHub - pxb1988/dex2jar: Tools to work with android .dex and java .class filesTools to work with android .dex and java .class files - pxb1988/dex2jarhttps://github.co…

注解实现json序列化的时候自动进行数据脱敏

最近在进行开发的时候遇到一个问题,需要对用户信息进行脱敏处理,原有的方式是写一个util类,在需要脱敏的字段查出数据后,显示掉用方法处理后再set回去,觉得这种方式能实现功能,但是不是特别优雅&#xff0c…

机器学习特征分析

机器学习的常规流程 在真正进入机器学习算法之前,数据准备和处理过程会尤为重要,这直接关系到后续模型的效果和最终的业务判决。 数据分析 什么是数据分析 数据分析指对原始数据进行检查、清理、转换及筛选等一系列动作,找到数据对结果的影…

Qwen1.5模型文本分类微调实战教程

大家好啊!今天咱们来聊聊怎么给大语言模型"调教"一下,让它在文本分类这个任务上玩得更溜。具体来说,我们要用Qwen1.5这个模型来做文章。别看这活儿听着高大上,其实做起来也没那么难。跟着我来,保证让你轻松上手! 咱们这…

How to fool AI content detectors?

Add prompt below: Make it sound like a tweed jacket wearing professor taking to a group of 20 years old students. Vary the sentences length. Make it persoanl, add a touch of humor. Make the blog post sound unique when compared to Other blog posts.

MySQL--库的操作

文章目录 1.创建数据库2.创建数据库案例3.字符集和校验规则3.1默认字符集3.2默认校验规则3.3查看系统默认字符集以及校验规则3.4查看数据库支持的字符3.5查看数据库支持的字符集校验规则3.6校验规则对数据库的影响不区分大小写查询:排序结果:区分大小写查…

BFS广度优先搜索和DFS深度优先搜索解决迷宫问题

前言 BFS广度优先搜索和DFS深度优先搜索解决迷宫问题 迷宫问题 原题目:迷宫由n行m列的单元格组成(n,m都小于等于50),每个单元格要吗是空地要吗是障碍物。现在请你找到一条从起点到终点的最短路径长度。 分析 BFS广度优先搜索 首先我们将起点入队&a…