学习指南

虚拟内存

CIE A-Level 计算机科学· 第5单元:系统软件· 45 分钟阅读

1. 虚拟内存的用途与概述★★☆☆☆⏱ 10 min

当多个程序同时运行时,所有程序数据的总大小通常会超过物理RAM的可用容量。虚拟内存通过将不活动的程序数据从RAM移动到辅助存储中一个称为交换空间(或分页文件)的专用区域,为活动进程释放RAM空间,从而解决了这个问题。

📘 定义

虚拟内存

一种内存管理技术,利用辅助存储扩展主存容量,营造出比物理RAM实际可用容量更大的连续地址空间的假象。

例:

一个拥有4GB RAM的系统可以运行6GB大小的游戏,方法是将2GB不活动的游戏数据存储在固态硬盘的虚拟内存中。

📐 例题

一台计算机拥有2GB物理RAM,五个打开的程序总共需要3.5GB内存。解释虚拟内存如何让这五个程序都保持打开状态。

  1. 1
    1. 操作系统识别出程序当前不活动的部分(例如,已经10分钟未使用的最小化文字处理器)。
  2. 2
    1. 不活动部分会从RAM复制到辅助存储的交换空间中,释放约1.5GB物理RAM供活动进程使用。
  3. 3
    1. 当用户切回这个不活动程序时,它的数据会被交换回RAM,同时新的不活动数据会被交换到虚拟内存中。

Exam tip:

一定要记住虚拟内存比物理RAM慢,因为辅助存储的访问延迟远高于RAM。

2. 分页与地址转换★★★☆☆⏱ 15 min

虚拟内存最常使用分页实现:虚拟地址空间被划分为固定大小的块(称为页),物理RAM被划分为同样大小的块(称为页框)。内存管理单元(MMU)负责处理虚拟地址和物理地址之间的自动转换。

📘 定义

页表

存储在主存中的数据结构,将每个虚拟页号映射到对应的物理页框地址,或将该页标记为存储在磁盘的虚拟内存中。

📐 例题

某系统使用1KB大小的页。一个进程的虚拟地址为0x0254,对应虚拟页号2。页表中页2对应的物理页框号是0x0A。计算对应的物理地址。

  1. 1
    1. 计算页内偏移量:页大小为1KB = 1024 = 0x400字节,因此偏移量等于虚拟地址对页大小取模:
  2. 2
    Offset=0x0254mod0x400=0x254\text{Offset} = 0x0254 \mod 0x400 = 0x254
  3. 3
    1. 计算物理页框的起始地址:
  4. 4
    Physical Start=0x0A×0x400=0x2800\text{Physical Start} = 0x0A \times 0x400 = 0x2800
  5. 5
    1. 加上偏移量得到完整物理地址:
  6. 6
    Physical Address=0x2800+0x254=0x2A54\text{Physical Address} = 0x2800 + 0x254 = 0x2A54

3. 页错误与抖动★★★☆☆⏱ 12 min

当进程尝试访问当前未加载到物理RAM中的页时,就会发生页错误。发生页错误时,操作系统会暂停该进程,将所需的页从交换空间加载到RAM的空闲页框中,更新页表,然后恢复进程运行。如果没有空闲页框,操作系统会将最近最少使用(LRU)的页换出到交换空间。

📘 定义

抖动

系统将大部分时间都用于在RAM和虚拟内存之间交换页面,而非执行应用指令,从而导致性能严重下降的状态。

例:

当有过多活动进程竞争过少的物理RAM时,就会发生抖动。

📐 例题

用户在一台仅拥有4GB RAM的笔记本电脑上打开了15个大型浏览器标签页,即使只有一个标签页处于活动状态,系统也变得极其缓慢。使用术语抖动解释为什么会发生这种情况。

  1. 1
    1. 所有15个标签页的总大小超过了4GB可用物理RAM,因此大部分标签页数据都存储在磁盘的虚拟内存中。
  2. 2
    1. 当用户在标签页之间切换时,每次切换都需要将新标签页的页交换进RAM,同时将旧页交换出到磁盘。
  3. 3
    1. 系统将大部分处理时间都用于处理页错误和交换,而非运行活动标签页。这种过度交换的状态就是抖动,它导致了系统严重变慢。

Exam tip:

CIE阅卷老师要求你必须将抖动与物理RAM不足和高页错误率关联起来,提到这两点才能获得满分。

4. 优缺点★★☆☆☆⏱ 8 min

  • 优点:

  • 允许有限物理RAM的系统运行更大的程序

  • 允许同时加载和打开更多进程

  • 通过将不活动数据移到磁盘,为活动进程释放物理RAM

  • 为进程之间提供内存保护,因为每个进程都有独立的虚拟地址空间

  • 缺点:

  • 虚拟内存访问比物理RAM访问慢得多

  • 地址转换和页错误处理需要额外的处理开销

  • 交换空间会占用辅助存储空间,减少用户可用存储

  • 如果RAM不足以满足当前工作负载,可能会导致抖动

✓ 快速检测

测试你的理解:

  1. 以下哪一项对虚拟内存的描述是正确的?

    • A:它通过硬盘为系统添加额外的物理RAM

    • B:它利用辅助存储扩展可用逻辑内存空间

    • C:它是CPU和主RAM之间的高速缓存

    • D:它永久存储操作系统内核

    显示答案
    B

    A错误:虚拟内存不会增加物理RAM。C错误:高速缓存与虚拟内存是不同的概念。D错误:内核存储在持久存储中,而非虚拟内存中。

5. 常见陷阱

错误做法:

认为虚拟内存会增加可用物理RAM的容量

原因:

虚拟内存不会改变系统的物理RAM容量,它只是将辅助存储用作扩展

正确做法:

应说明虚拟内存增加了进程可用的逻辑地址空间,允许运行比单独物理RAM所能支持的更大或数量更多的程序

错误做法:

将页错误误认为是系统错误或崩溃

原因:

页错误是虚拟内存运行过程中正常、预期会发生的部分,不是错误

正确做法:

应认识到页错误会触发操作系统将请求的页从交换区加载到RAM中,问题解决后进程会正常恢复运行

错误做法:

认为抖动是由磁盘上分配的交换空间过多导致的

原因:

抖动是由物理RAM不足以容纳运行进程的所有活动页导致的

正确做法:

应将抖动与当前工作负载下物理RAM不足导致的高页错误率关联起来

错误做法:

从虚拟地址计算物理地址时改变偏移量

原因:

只有页号会被映射到新的物理页框;偏移量用于标识页内的具体字节,不会改变

正确做法:

一定要保留虚拟地址的原始偏移量,将其加到物理页框的起始地址上

错误做法:

认为虚拟内存仅在RAM完全占满时才会被使用

原因:

即使RAM未占满,操作系统也会使用虚拟内存,以提供内存保护和更大的地址空间

正确做法:

应说明虚拟内存的主要用途是在RAM不足时扩展内存,但它还能提供进程保护和更大地址空间的好处

6. 速查表

术语

核心定义

虚拟内存

主存的辅助存储扩展

虚拟地址空间的固定大小块

页框

物理RAM的固定大小块

页表

将虚拟页映射到物理页框

页错误

请求页不在RAM中,触发交换

抖动

过度交换降低系统性能

交换空间

虚拟内存所用的辅助存储区域

真题中的出现

AI 根据考纲规律估算的考点位置,请对照官方真题核实准确性。仅作复习重点参考。

  • 2022 · 12

    解释虚拟内存的用途

  • 2023 · 11

    描述抖动的产生原因

  • 2024 · 12

    对比RAM和虚拟内存

深入阅读

下一步

虚拟内存是CIE A-Level计算机科学试卷1中重点考察的核心内存管理概念,因此掌握它的核心术语、工作流程和常见易错点对考试成功至关重要。它建立在你对主存组织结构和操作系统功能的理解之上,连接到进程调度、内存保护和辅助存储设计等更广泛的主题。在这个子主题之外,你在学习操作系统安全、多任务和系统性能优化时会再次遇到虚拟内存概念。扎实掌握这个主题能帮助你应对考试中的简答题和扩展回答题。