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

9、讲一讲你理解的虚拟内存【中高频】

  • 计算机早期,CPU 是直接操作 物理内存(Physical Memory)的,但这会导致 内存空间无法完全隔离,一个程序修改了另一个程序的地址空间,就会导致程序崩溃;同时物理内存大小有限,一旦超出这个范围,程序也会崩溃。

    在这里插入图片描述

  • 为了解决这个问题,引入了虚拟内存技术。虚拟内存是一种内存管理技术,是虚拟的、逻辑上存在的连续存储空间,它在程序运行期间 动态映射 到多个物理内存碎片 中。如果物理内存中,它会借助磁盘来拓展空间(如 内存交换技术),因此虚拟内存比实际的物理内存大得多。

    • 每一个进程都有独立的虚拟地址空间,不同进程互相不干扰,提高了安全性

    • 由于虚拟内存在背后会借助磁盘空间,所以可以让每个程序都以为有充足的空间来供运行。

      在这里插入图片描述

  • 映射的原理:

    • **虚拟内存到物理内存的映射,是通过 页映射表(page table)完成的。**内核会为 每一个进程 维护一份相互独立的页映射表。一段虚拟内存空间 通过 页映射表 映射到一段物理内存空间上,这样 CPU 访问对应 虚拟内存地址的时候 就可以通过查找 页映射表 来访问对应的物理内存。另外,页(page)是 虚拟内存 向 物理内存 映射的基本单元。

    • 虚拟内存是这 按需映射 的。在虚拟内存里 程序运行过程时 没有访问 的地方,是不会映射到物理内存上的;只有被访问的空间才会被映射到物理内存上。所以说,虚拟内存大,只能表示 程序可访问的空间大,不代表它实际占用的物理内存也很大。

      img

http://www.dtcms.com/a/73643.html

相关文章:

  • 【Linux】设置系统时间
  • 简单的实现RPC框架
  • NineData云原生智能数据管理平台新功能发布|2025年2月版
  • Java继承与反思,单例模式与静态的思考
  • STM32 ADC原理与驱动详解:从存储器映射到多通道采集(下) | 零基础入门STM32第六十六步
  • 基于51单片机的12864模拟示波器proteus仿真
  • 【Linux篇】:初步理解何为进程--从硬件“原子“到PCB“粒子“的进程管理革命
  • 直击行业痛点,赛逸展2025科技创新奖推陈出新
  • 42.单调栈2
  • 3月17日星期一今日早报简报微语报早读
  • 华为OD机试 - 书籍叠放 - 逻辑分析(Java 2023 B卷 200分)
  • 【操作系统安全】任务3:Linux 网络安全实战命令手册
  • JAVA(8)-数组
  • Python虚拟环境完全指南:用venv管理项目依赖,避免环境冲突的N个技巧
  • Matlab 汽车二自由度转弯模型
  • VLLM:虚拟大型语言模型(Virtual Large Language Model)
  • 决策树(DT算法)
  • MongoDB 可观测性最佳实践
  • 从Excel到搭贝的转变过程
  • 【Agent】OpenManus-Flow-BaseFlow详细分析
  • 解决qt中自定插件加载失败,不显示问题。
  • 2-信息安全概述
  • maven依赖包重复查找处理方法
  • hive通过元数据库查询分区和非分区的数据量及存储占用
  • DeepSeek 是否被过度吹捧了?
  • ssh公钥认证失败问题
  • [论文笔记]在复杂环境中使用基于注意力机制的深度确定性策略梯度进行路径规划
  • 【python】http post 在body中传递json数据 以发送
  • HDC 和 HiLog 命令详细介绍
  • 【数据结构】如何解决二叉树在遍历查找前驱与后继的问题?线索二叉树来帮您……