虚拟存储器是一种抽象的存储管理技术,它为每个进程提供独立的、连续的逻辑地址空间(即虚拟地址空间)

  1. 虚拟存储器与内存模型
    虚拟存储器是一种抽象的存储管理技术,它为每个进程提供独立的、连续的逻辑地址空间(即虚拟地址空间),使程序可以像访问真实内存一样操作,而无需关心实际物理内存的布局和容量。其核心依赖于 MMU(Memory Management Unit,内存管理单元) 实现虚拟地址到物理地址的动态映射。操作系统通过页表(Page Table)维护这种映射关系,并结合 TLB(Translation Lookaside Buffer)加速地址转换过程。当 CPU 发出内存访问请求时,流程如下:
CPU → 虚拟地址 → MMU(查页表/TLB)→ 物理地址 → 主存

若所需页面不在主存中,则触发“缺页中断”,由操作系统将对应数据从外存调入内存。这种方式实现了内存的按需分配、隔离保护以及多任务并发执行的基础支持。

  1. 外存储器的介绍
    外存储器用于长期保存大量非活跃程序和数据,以文件系统形式组织,具有容量大、成本低、断电后数据不丢失等特点,但访问速度远低于主存。常见的外存储器包括:
  • 磁表面存储器(如硬盘 HDD):利用磁性材料记录信息。

    • 组成结构:
      • 盘片(Platter):涂有磁性介质,用于存储数据;
      • 驱动器(Actuator & Spindle Motor):控制磁头移动(寻道)和盘片高速旋转;
      • 控制器(Disk Controller):接收主机命令(如读写扇区)、进行错误校验、缓存管理等;
      • 接口(Interface):如 SATA、SAS、IDE,负责与主机通信。
    • 硬盘物理结构特点:
      • 多个盘片堆叠组成盘片组,上下两面均可存储;
      • 每个盘面对应一个磁头;
      • 所有盘面上相同半径的磁道构成一个 圆柱面(Cylinder),减少磁头移动可提升访问效率;
      • 数据按 扇区(Sector) 存储,典型大小为 512 字节或 4KB。
  • 光盘存储器(CD/DVD/Blu-ray):利用激光读写凹坑表示数据,便携但速度慢;

  • 固态硬盘(SSD):基于 NAND Flash,无机械部件,速度快、抗震强,逐渐取代传统 HDD。
    MMU(Memory Management Unit,内存管理单元)通过页表(Page Table)实现虚拟地址到物理地址的转换,其基本原理如下:

核心机制:分页机制 + 页表映射

现代操作系统通常将虚拟内存和物理内存划分为固定大小的块,称为“页”(Page)。常见页面大小为 4KB。

  • 虚拟地址空间被划分为多个 虚拟页(Virtual Page, VP)
  • 物理内存被划分为多个 物理页帧(Physical Frame, PF)

MMU 利用 页表 来记录每个虚拟页对应哪个物理页帧,从而完成地址转换。


地址转换过程(以单级页表为例):

假设一个 32 位系统,页面大小为 4KB(即 2122^{12}212 字节),则:

  • 虚拟地址结构分为两部分:
    • 高 20 位:页号(Page Number) —— 用于索引页表
    • 低 12 位:页内偏移(Offset) —— 在页内寻址

流程如下:

CPU 发出虚拟地址 → MMU 拆分页号与偏移
                 → 查页表(使用页号作为索引)
                 → 获取对应的物理页帧号(Frame Number)
                 → 拼接:物理页帧号 + 偏移 = 物理地址
                 → 访问主存

例如:

  • 虚拟地址:0x00401508
  • 页大小 4KB → 偏移占 12 位 → 页号 = 0x00401, 偏移 = 0x508
  • 查页表项 [0x00401] 得到物理页帧号 0x1A3
  • 合成物理地址:0x1A3 << 12 | 0x508 = 0x1A3508

多级页表优化空间开销

为了减少页表占用内存(尤其在 64 位系统中),采用多级页表结构(如二级、三级甚至四级页表)。
例如 x86-64 常用四级页表:PML4 → PDPT → PD → PT,逐级索引,只分配实际使用的部分页表。


缺失处理与 TLB 加速

  • 若页表项中标记“无效”(未加载进内存),则触发 缺页中断,由操作系统调入页面;
  • 为加速查找,MMU 使用 TLB(Translation Lookaside Buffer) 缓存最近使用的页表项,命中时无需访问内存中的页表。

✅ 总结:
MMU 通过将虚拟地址拆解为页号和偏移,利用页表查找页号对应的物理页帧,再结合偏移生成物理地址。整个过程对程序透明,是虚拟内存系统的核心支撑。
在这里插入图片描述

评论
成就一亿技术人!
拼手气红包6.0元
还能输入1000个字符
 
红包 添加红包
表情包 插入表情
 条评论被折叠 查看
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

Bol5261

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值