【操作系统】虚拟内存串讲

news2025/1/15 6:55:41

文章目录

    • 概述
    • 虚拟页管理
      • 请求页表
      • 物理地址的获取
      • 虚拟页大小与内存块大小的探讨

概述

  • 操作系统为每一个进程分配一个独立的虚拟内存空间,以分页系统为例,每个进程的虚拟页号都是从 0 开始的
    在这里插入图片描述
  • 不同的进程可以使用相同的虚拟页号,并且不会互相影响,这在物理内存上是不允许的
  • 一般情况下,虚拟页大小和内存块大小相等,并且虚拟页号比物理页号多得多
  • 而物理页号是由内存容量、内存块大小决定的,虚拟内存空间并不是真的从物理上扩充了内存,而是借用了外存和分页请求系统,从逻辑上扩充了内存
  • 虚拟内存是基于局部性原理的,简单来说就是一个进程可能需要 10GB 的内存,而内存只有 4GB,无法支持进程运行,但是在某个时间段内,可能进程只需要 1GB,因此可以让这个进程直接运行,需要用到的页调入内存,当内存空间不够时,再将某些页面调入外存
  • 在这种管理方式下,进程就好像运行在一个有 10GB 内存的计算机上,这就是“虚拟”

虚拟页管理

请求页表

  • 虚拟页和物理页不是一一对应的,例如虚拟页号 0 对应的内存块号可能是 666
  • 因此需要有虚拟地址到物理地址的转换机制,通过请求页表实现
    请求页表结构
    • 页号:虚拟页号
    • 物理块号:内存的块号
    • 状态位:虚拟页是否在内存中,只有状态位有效,物理块号字段才有效
    • 访问字段:记录虚拟页号在一段时间内的访问次数
    • 修改位:虚拟页在调入内存后,是否有被修改
    • 外存地址:虚拟页的磁盘(外存)块号

物理地址的获取

  • 当进程需要访问虚拟地址 A 时,操作系统将 A 中的页号(Virtual Page,VP)、页内偏移量(offset)提取出来
  • 查询求页表,找到页号 = VP 的表项
    • 若 VP 对应的 P 有效,那么通过(物理块号+offset)得到物理地址
    • 若 VP 对应的 P 无效,则需要通过外存地址字段,将虚拟页调入内存

虚拟页大小与内存块大小的探讨

  • 一般情况下,虚拟页大小和主存块大小是相等的,这样虚拟页的页内偏移量,就是主存块的块内偏移量
  • 但这并不是强制规定的,两者大小可以不同(24王道考研408计算机组成原理习题 4.3(大题3,2019)
  • 假设虚拟页内偏移量 k 位,虚拟页的页内偏移量和物理地址的低 k 位完全相同
  • 虚拟页大小和主存块大小不相等的情况
    在这里插入图片描述
    • 虚拟地址和物理地址都按字节编址,MAR 有 32 位
    • 可以看出,虚拟页的页内偏移量 12 位,而主存块内地址 6 位,显然虚拟页大小 > 主存块大小
    • 那么虚拟地址页号的高 20 位,只能映射内存块号的高 20 位,内存块号剩下的 6 位需要借助虚拟地址中页内偏移量的高 6 位

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

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

相关文章

Redis的BitMap实现分布式布隆过滤器

布隆过滤器&#xff08;Bloom Filter&#xff09;是一种高效的概率型数据结构&#xff0c;用于判断一个元素是否属于一个集合。它通过使用哈希函数和位数组来存储和查询数据&#xff0c;具有较快的插入和查询速度&#xff0c;并且占用空间相对较少。 引入依赖 <!--切面--&…

Spring Cloud 之 Feign 简介及简单DEMO的搭建

Feign简介&#xff1a; Feign是一种声明式、模板化的HTTP客户端。在Spring Cloud中使用Feign, 我们可以做到使用HTTP请求远程服务时能与调用本地方法一样的编码体验。 Feign是在RestTemplate基础上封装的&#xff0c;使用注解的方式来声明一组与服务提供者Rest接口所对应的本地…

黑豹程序员-架构师学习路线图-百科:Maven

文章目录 1、什么是maven官网下载地址 2、发展历史3、Maven的伟大发明 1、什么是maven Apache Maven is a software project management and comprehension tool. Based on the concept of a project object model (POM), Maven can manage a project’s build, reporting and…

微信小程序3

一、flex布局 布局的传统解决方案&#xff0c;基于[盒状模型]&#xff0c;依赖display属性 position属性 float属性 1、什么是flex布局&#xff1f; Flex是Flexible Box的缩写&#xff0c;意为”弹性布局”&#xff0c;用来为盒状模型提供最大的灵活性。 任何一个容器都可以…

同为科技(TOWE)工业用插头插座与连接器产品大全

TOWE IPS系列工业标准插头插座、连接器系列产品 随着国内经济快速的发展&#xff0c;人们生活水平的不断提高&#xff0c;基础设施的建设是发展的基础&#xff0c;完善的基础设施对加速经济的发展起到至关重要的作用。其中&#xff0c;基础建设中机场、港口、电力、通讯等公共…

GLEIF携手TrustAsia,共促数字邮件证书的信任与透明度升级

TrustAsia首次发布嵌入LEI的S/MIME证书&#xff0c;用于验证法定实体相关的电子邮件账户的真实与完整性 2023年10月&#xff0c;全球法人识别编码基金会&#xff08;GLEIF&#xff09;与证书颁发机构&#xff08;CA&#xff09;TrustAsia通力合作&#xff0c;双方就促进LEI在数…

基础课5——语音合成技术

TTS是语音合成技术的简称&#xff0c;也称为文语转换或语音到文本。它是指将文本转换为语音信号&#xff0c;并通过语音合成器生成可听的语音。TTS技术可以用于多种应用&#xff0c;例如智能语音助手、语音邮件、语音新闻、有声读物等。 TTS技术通常包括以下步骤&#xff1a; …

医学大数据分析 - 心血管疾病分析 计算机竞赛

文章目录 1 前言1 课题背景2 数据处理3 数据可视化4 最后 1 前言 &#x1f525; 优质竞赛项目系列&#xff0c;今天要分享的是 &#x1f6a9; 基于大数据的心血管疾病分析 该项目较为新颖&#xff0c;适合作为竞赛课题方向&#xff0c;学长非常推荐&#xff01; &#x1f9…

什么牌子的电容笔性价比高?电容笔牌子排行

在科技进步的同时&#xff0c;各种类型的电容笔也在国内的市场上涌现。一支好用的电容笔&#xff0c;不仅能让我们在学习上有很大的提高&#xff0c;而且还能让我们的工作效率大大提高。国产平替电容笔&#xff0c;在技术和品质上&#xff0c;都有很大的改进余地&#xff0c;起…

如何才能拥有大量的虾皮印尼买家号?

注册虾皮印尼买家号还是比较简单的&#xff0c;直接打开shopee印尼官网&#xff0c;点击注册&#xff0c;输入手机号&#xff0c;接收短信&#xff0c;然后再设置一个密码就可以了。 如果想要注册多个虾皮买家号&#xff0c;那么要借助软件操作才可以&#xff0c;比如shopee买家…

本地项目打jar包依赖并上传到maven仓库

一、 打jar包依赖 先去掉启动类pom中添加如下的maven打包插件 <build><plugins><plugin><groupId>org.apache.maven.plugins</groupId><artifactId>maven-compiler-plugin</artifactId><version>3.8.0</version><c…

RN:报错info Opening flipper://null/React?device=React%20Native

背景 在 ios 上使用 debug 模式的时候&#xff0c;报错&#xff1a;info Opening flipper://null/React?deviceReact%20Native&#xff0c;我找到了这个 issue 其实也可以看到现在打开 debug&#xff0c;是 open debug&#xff0c;也不是之前的 debug for chrome 了&#xf…

【Arduino TFT】 记录使用DMA优化TFT屏帧率

忘记过去&#xff0c;超越自己 ❤️ 博客主页 单片机菜鸟哥&#xff0c;一个野生非专业硬件IOT爱好者 ❤️❤️ 本篇创建记录 2023-10-18 ❤️❤️ 本篇更新记录 2023-10-18 ❤️&#x1f389; 欢迎关注 &#x1f50e;点赞 &#x1f44d;收藏 ⭐️留言&#x1f4dd;&#x1f64…

软件外包开发设计文档

编写软件设计文档是项目开发过程中的关键步骤&#xff0c;它有助于明确系统的设计和架构&#xff0c;并为开发人员提供指导。以下是编写软件设计文档的一般步骤和建议&#xff0c;希望对大家有所帮助。北京木奇移动技术有限公司&#xff0c;专业的软件外包开发公司&#xff0c;…

Python中Scrapy框架搭建ip代理池教程

在网络爬虫开发中&#xff0c;使用代理IP池可以提高爬取效率和匿名性&#xff0c;避免被目标网站封禁IP。本文将介绍如何使用Python中的Scrapy框架搭建IP代理池&#xff0c;并提供代码实例&#xff0c;帮助您快速搭建一个稳定可靠的代理池。 Python中Scrapy框架搭建ip代理池教程…

Excel·VBA制作工资条

看到一篇博客《excel表头_Excel工资表怎么做&#xff1f;3分钟学会利用函数生成工资表》&#xff0c;使用排序功能、函数制作工资条。但如果需要经常制作工资条&#xff0c;显然使用VBA更加方便 VBA制作工资条 Sub 制作工资条()Dim title_row&, blank_row&, ws_new$,…

变电站数字孪生3D可视化运维系统,实现电力行业智慧化数字化信息化转型升级

变电站数字孪生3D可视化运维系统&#xff0c;实现电力行业智慧化数字化信息化转型升级。近年来&#xff0c;随着科技不断发展与进步&#xff0c;我国在智慧电网国网电力建设方面取得了长足进展。目前已经在多个地区和国家建立起了智慧电网电力项目并投入运行&#xff0c;这些项…

Ask Milvus Anything!聊聊被社区反复@的那些事儿ⅠⅠ

在上月的 “Ask Milvus” 专题直播中&#xff0c;我们为大家带来了 Backup 的技术解读&#xff0c;收到了社区成员很多积极的反馈。本期直播&#xff0c;我们将继续为大家带来社区呼声很高的 “Birdwatcher” 和 “Range Search” 两项功能的技术解读。 BirdWatcher 作为 Milvu…

Go语言入门心法(八): mysql驱动安装报错onnection failed

一: go语言安装mysql驱动报错 安装最新版mysql驱动&#xff1a; PS D:\program_file\go_workspace> go install github.com/go-sql-driver/mysqllatest 报错信息&#xff1a; go: github.com/go-sql-driver/mysqllatest: module github.com/go-sql-driver/mysql: Get "…

如何转换Corona和Vray材质?cr材质转vr材质的方法

cr材质转vr材质的方法一&#xff1a;使用CG Magic插件&#xff0c;一键转换 CG Magic是一款基于3ds Max深度开发的智能化辅助插件&#xff0c;上千项实用功能&#xff0c;降低渲染时长&#xff0c;节省时间和精力&#xff0c;大幅简化工作流程&#xff0c;助力高效完成创作。 …