尧图网站建设 尧图网络
  • 首页
  • 关于我们
  • 服务项目
  • 案例展示
  • 建站流程
  • 资讯中心
  • 联系我们
首页/资讯中心/详情

3.2.1 虚拟内存的基本概念

3.2.1 虚拟内存的基本概念
📅 发布时间:2026/6/18 8:18:45

1.虚拟内存的基本概念

在计算机科学(特别是操作系统)的语境下,“传统存储管理”通常指在虚拟存储器(Virtual Memory)技术普及之前的内存管理方式(如固定分区、动态分区、基本分页或基本分段管理)。

传统存储管理有两个最核心的特征,这也正是它们被现代虚拟存储技术所取代的主要原因:

1. 一次性 (Entirety)

一次性是指作业必须在运行前全部装入内存。

  • 具体表现:如果一个程序的逻辑空间是 100MB,但此时系统可用内存只有 80MB,那么该程序就无法启动。
  • 局限性:
    • 无法运行大程序:程序的规模受到物理内存容量的直接限制。
    • 内存利用率低:程序中某些不常用的功能模块(如错误处理逻辑)也会一直占据内存。

2. 驻留性 (Residency)

驻留性是指作业被装入内存后,在运行全过程中将一直驻留在内存中。

  • 具体表现:即使程序在运行过程中因为等待 I/O 处于阻塞状态,或者某些代码段已经运行完毕不再需要,它们依然会占据内存空间,直到整个作业执行结束。
  • 局限性:导致大量内存空间被暂时不用的数据浪费,限制了系统中并发执行的作业数量(多道程序度)。

3. 其他补充特征(视具体方案而定)

除了上述两个核心特征,在不同的传统管理方案中还存在以下特点:

  • 连续性 (Contiguity):在分区管理方案中,通常要求为作业分配一个连续的物理内存空间。
  • 碎片问题 (Fragmentation):
    • 固定分区产生内部碎片(分配的空间没用完)。
    • 动态分区产生外部碎片(空间太细碎,无法容纳新程序)。

传统存储管理 vs. 虚拟存储管理

为了解决这些问题,现代操作系统引入了虚拟存储管理,其对比特征如下表:

特征 传统存储管理 虚拟存储管理
载入方式 全部装入 (一次性) 请求调入 (只装入当前需要的页/段)
退出方式 运行完才退出 (驻留性) 置换功能 (不用的部分被换出到磁盘)
逻辑空间 受物理内存限制 远大于物理内存 (受寻址范围限制)

2.局部性原理

1. 时间局部性 (Temporal Locality)

  • 定义:如果程序中的某条指令一旦执行,或某个数据被访问,不久后该指令或数据可能再次被访问。
  • 成因:程序中存在着大量的循环操作。
  • 应用实现:通过将近来使用的指令和数据保存到高速缓存 (Cache) 中,并利用高速缓存的层次结构来实现。

2. 空间局部性 (Spatial Locality)

  • 定义:一旦程序访问了某个存储单元,不久后其附近的存储单元也将被访问。
  • 成因:
    • 指令运行:指令通常是顺序存放、顺序执行的。
    • 数据存储:数据一般是以向量、数组、表等形式簇聚存储的。
  • 应用实现:通常使用较大的高速缓存,并通过在控制逻辑中集成预取机制来实现。

3. 核心价值:虚拟内存技术

虚拟内存技术本质上是利用局部性原理构建了一个“内存-外存”的两级存储器结构。通过这种方式,系统可以在有限的物理内存基础上,实现高效的数据交换与缓存,使用户感觉到拥有比实际内存大得多的编程空间。

3.虚拟存储器的定义和特征

虚拟存储器(Virtual Memory)是计算机系统内存管理的一种核心技术,它让应用程序认为它拥有一个连续且完整的内存地址空间,而实际上,这个空间通常是被分隔成多个物理内存碎片,甚至有一部分存储在外部磁盘上。

1. 虚拟存储器的定义

虚拟存储器是指具有请求调入和置换功能,能从逻辑上对内存容量加以扩充的一种存储器系统。

其本质是操作系统通过硬件(如内存管理单元 MMU)和软件的结合,在内存和外存(硬盘/SSD)之间建立起一种逻辑联系。对于用户和程序而言,它呈现为一个比物理内存(RAM)大得多的单一存储池。


2. 虚拟存储器的四大特征

虚拟存储器之所以能实现“小内存运行大程序”,主要归功于以下四个基本特征:

  • 多次性(Partial Loading):

    这是虚拟存储器最显著的特征。程序在运行时,不需要一次性全部装入内存,而是允许被分成多次调入。只需将当前运行所需的部分页面或段装入内存即可启动。

  • 对换性(Swappability):

    在程序运行过程中,允许将暂时不用的代码或数据从内存调出到外存(换出),并将紧迫需要的代码或数据从外存调入内存(换进)。这种频繁的交换实现了内存资源的动态分配。

  • 离散性(Discreteness):

    程序在内存中不需要占据连续的物理空间。通过页表或段表映射,程序可以散落在物理内存的不同位置。这是实现虚拟存储器的前提条件。

  • 虚拟性(Virtuality):

    这是最终表现出的结果。用户逻辑上的地址空间大大超过了实际的物理内存容量。例如,在 64 位系统中,逻辑地址空间理论上可以达到 $2^{64}$ 字节,远超实际物理内存。


3. 实现原理:局部性原理

虚拟存储器的成功建立在程序执行的局部性原理(Locality of Reference)之上:

  1. 时间局部性: 如果某条指令或数据被访问,不久后它很可能再次被访问(如循环)。
  2. 空间局部性: 如果某个存储单元被访问,其附近的单元也很快会被访问(如数组遍历)。

基于此,系统只需保留“活跃”的数据在 RAM 中,而不活跃的则待在磁盘的交换分区(Swap/Pagefile)中。


4. 虚拟存储器的主要优势

优势 说明
运行大型程序 允许程序大小超过物理 RAM 的物理限制。
提高多道程序度 内存中可以同时驻留更多进程,提升 CPU 利用率。
内存保护与隔离 每个进程拥有独立的虚拟地址空间,互不干扰,增强安全性。
简化编程 开发者无需操心物理内存的碎片管理或覆盖技术。

注意: 虚拟存储器虽然好用,但如果物理内存严重不足,会导致频繁的换入换出(即抖动/Thrashing),从而使系统性能大幅下降

4.虚拟内存技术的实现

虚拟内存的实现主要依赖于操作系统(软件)与中央处理器中的内存管理单元 MMU(硬件)的紧密协作。

实现虚拟内存的核心思想是:将程序的一部分装入内存运行,将其余部分留在磁盘上,并在需要时动态地进行交换。

以下是虚拟内存技术实现的三种主要方式及其关键机制:


1. 三种主要实现方式

① 请求分页存储管理(Demand Paging)

这是目前最主流的实现方式(如 Windows、Linux、macOS 均采用)。

  • 原理:将逻辑地址空间分为固定大小的“页”(Page),将物理内存分为同样大小的“页框”(Frame)。
  • 特点:只有在程序执行过程中发现所需的页不在内存时,才由操作系统将其从磁盘调入内存。

② 请求分段存储管理(Demand Segmentation)

  • 原理:按照程序的逻辑结构(如函数、数据段)将地址空间划分为不等长的“段”。
  • 特点:以段为单位进行调度和交换,更符合程序员的逻辑视图,但容易产生内存碎片。

③ 请求段页式存储管理

  • 原理:结合了前两者的优点。先将程序按逻辑分成段,再将每个段划分为固定大小的页。
  • 优点:既有分段的逻辑保护功能,又有分页的内存利用率。

2. 实现虚拟内存的四大关键机制

要让虚拟内存跑起来,必须具备以下技术支撑:

A. 页表机制(Page Table)

页表是逻辑地址到物理地址的“翻译字典”。在请求分页系统中,页表项通常包含:

  • 页框号:物理内存的实际地址。
  • 状态位(P):标识该页是否已在物理内存中。
  • 访问字段:记录访问次数或时间,供置换算法参考。
  • 修改位(M):标识该页调入内存后是否被修改过(若没修改过,换出时无需写回磁盘,提高效率)。

B. 缺页中断(Page Fault)

当 CPU 访问的逻辑地址在页表中显示“不在内存”时,会触发一个缺页中断。

  1. 暂停进程:CPU 保护现场。
  2. 查找磁盘:操作系统去磁盘寻找缺失的数据。
  3. 调入内存:将数据读入物理内存的一个空闲页框。
  4. 更新页表:修改状态位。
  5. 恢复执行:重新执行之前出错的指令。

C. 地址变换机构(MMU & TLB)

  • MMU(内存管理单元):硬件负责实时将虚拟地址转换为物理地址。
  • TLB(快表):由于查页表需要访问内存(速度慢),硬件中专门设置了一个高速缓存(TLB),存储最近常用的页表项,极大提升了转换速度。

D. 页面置换算法(Page Replacement Algorithms)

当内存满了,但又需要调入新页时,必须决定“牺牲”哪一页。常见的算法有:

  • OPT(最佳算法):淘汰未来最长时间不用的页(理论模型,无法实现)。
  • FIFO(先进先出):淘汰最早进入内存的页(容易导致性能问题)。
  • LRU(最近最久未使用):淘汰过去一段时间最久没被访问的页(最常用,效果最好)。
  • CLOCK(时钟算法):一种兼顾性能与复杂度的折中实现。

3. 实现的完整流程(示例:请求分页)

  1. 地址转换:CPU 给出虚拟地址,硬件 MMU 查找 TLB。
  2. 命中与否:
    • 若 TLB 命中,直接获取物理地址。
    • 若 TLB 未命中,查找内存中的页表。
  3. 触发缺页:如果页表显示该页不在内存中(状态位为 0),触发缺页中断。
  4. 页面调入:
    • 操作系统接管,在物理内存找空闲空间。
    • 若无空闲空间,根据 LRU 等算法选出一个页面换出到磁盘。
    • 从磁盘读入所需的页面,填入内存。
  5. 更新与重试:更新页表和 TLB,CPU 重新执行刚才的指令。

总结

虚拟内存的实现本质上是“用时间换空间”:通过复杂的地址转换逻辑和频繁的磁盘 I/O(耗时),换取了远超物理内存容量的运行环境(空间)。

相关新闻

  • 2025最新!MBA论文必备10个AI论文平台深度测评
  • 【毕业设计】基于springboot的启梦校园招聘平台(源码+文档+远程调试,全bao定制等)
  • Windows找不到xactengine2_7.dll文件 丢失问题 下载方法

最新新闻

  • 重庆2026耐磨轮胎靠谱公司实力测评,价格透明口碑力荐 - mypinpai
  • 2026全域外卖平台红黑榜真实横评,避坑攻略口碑实力双保障 - mypinpai
  • K2.5开源模型:面向生产级Agent系统的状态感知架构
  • 馨风尚包装源头工厂公司介绍与实力测评,零套路口碑之选 - myqiye
  • 交流电转直流电的电源电路
  • Python 开发者进阶 AI,除了语法还要补哪些课

日新闻

  • 5分钟掌握Python进化算法:Geatpy高性能优化工具完全指南
  • Microchip 24AA044 EEPROM选型与应用全指南:从参数解析到实战编程
  • 华为的鸿蒙到底有多牛?为什么称作遥遥领先?

周新闻

  • 3步解锁iOS设备:applera1n激活锁绕过完全指南
  • 39 2026 人工智能证书终极盘点,普通人选 AI 证书可以从这些方向入手
  • Redis 暴露公网有多危险?从端口检查到补救步骤

月新闻

  • 【总结】入门篇:50句话让你记住架构核心概念
  • WeChatMsg技术方案解析:实现Mac微信数据自主管理的完整解决方案
  • WeChatMsg:革新性微信数据备份方案,打造你的专属数字记忆库

关于尧图

  • 公司简介
  • 团队介绍
  • 企业文化
  • 荣誉资质

服务项目

  • 定制开发
  • 电商建站
  • UI 设计
  • 运维服务

快速链接

  • 案例展示
  • 建站流程
  • 常见问题
  • 资讯中心

联系方式

  • 📍北京市朝阳区互联网产业园 A 座 10 层
  • 📞400-888-8888
  • ✉️contact@rkmt.cn
  • 🕐周一至周日 9:00-21:00

© 2024 北京尧图网络科技有限公司 版权所有 | 京 ICP 备 XXXXXXXX 号