虚拟内存
CIE A-Level 计算机科学· 第5单元:系统软件· 45 分钟阅读
1. 虚拟内存的用途与概述★★☆☆☆⏱ 10 min
当多个程序同时运行时,所有程序数据的总大小通常会超过物理RAM的可用容量。虚拟内存通过将不活动的程序数据从RAM移动到辅助存储中一个称为交换空间(或分页文件)的专用区域,为活动进程释放RAM空间,从而解决了这个问题。
虚拟内存
一种内存管理技术,利用辅助存储扩展主存容量,营造出比物理RAM实际可用容量更大的连续地址空间的假象。
例:
一个拥有4GB RAM的系统可以运行6GB大小的游戏,方法是将2GB不活动的游戏数据存储在固态硬盘的虚拟内存中。
一台计算机拥有2GB物理RAM,五个打开的程序总共需要3.5GB内存。解释虚拟内存如何让这五个程序都保持打开状态。
- 1
- 操作系统识别出程序当前不活动的部分(例如,已经10分钟未使用的最小化文字处理器)。
- 2
- 不活动部分会从RAM复制到辅助存储的交换空间中,释放约1.5GB物理RAM供活动进程使用。
- 3
- 当用户切回这个不活动程序时,它的数据会被交换回RAM,同时新的不活动数据会被交换到虚拟内存中。
Exam tip:
一定要记住虚拟内存比物理RAM慢,因为辅助存储的访问延迟远高于RAM。
2. 分页与地址转换★★★☆☆⏱ 15 min
虚拟内存最常使用分页实现:虚拟地址空间被划分为固定大小的块(称为页),物理RAM被划分为同样大小的块(称为页框)。内存管理单元(MMU)负责处理虚拟地址和物理地址之间的自动转换。
页表
存储在主存中的数据结构,将每个虚拟页号映射到对应的物理页框地址,或将该页标记为存储在磁盘的虚拟内存中。
某系统使用1KB大小的页。一个进程的虚拟地址为0x0254,对应虚拟页号2。页表中页2对应的物理页框号是0x0A。计算对应的物理地址。
- 1
- 计算页内偏移量:页大小为1KB = 1024 = 0x400字节,因此偏移量等于虚拟地址对页大小取模:
- 2
- 3
- 计算物理页框的起始地址:
- 4
- 5
- 加上偏移量得到完整物理地址:
- 6
3. 页错误与抖动★★★☆☆⏱ 12 min
当进程尝试访问当前未加载到物理RAM中的页时,就会发生页错误。发生页错误时,操作系统会暂停该进程,将所需的页从交换空间加载到RAM的空闲页框中,更新页表,然后恢复进程运行。如果没有空闲页框,操作系统会将最近最少使用(LRU)的页换出到交换空间。
抖动
系统将大部分时间都用于在RAM和虚拟内存之间交换页面,而非执行应用指令,从而导致性能严重下降的状态。
例:
当有过多活动进程竞争过少的物理RAM时,就会发生抖动。
用户在一台仅拥有4GB RAM的笔记本电脑上打开了15个大型浏览器标签页,即使只有一个标签页处于活动状态,系统也变得极其缓慢。使用术语抖动解释为什么会发生这种情况。
- 1
- 所有15个标签页的总大小超过了4GB可用物理RAM,因此大部分标签页数据都存储在磁盘的虚拟内存中。
- 2
- 当用户在标签页之间切换时,每次切换都需要将新标签页的页交换进RAM,同时将旧页交换出到磁盘。
- 3
- 系统将大部分处理时间都用于处理页错误和交换,而非运行活动标签页。这种过度交换的状态就是抖动,它导致了系统严重变慢。
Exam tip:
CIE阅卷老师要求你必须将抖动与物理RAM不足和高页错误率关联起来,提到这两点才能获得满分。
4. 优缺点★★☆☆☆⏱ 8 min
优点:
允许有限物理RAM的系统运行更大的程序
允许同时加载和打开更多进程
通过将不活动数据移到磁盘,为活动进程释放物理RAM
为进程之间提供内存保护,因为每个进程都有独立的虚拟地址空间
缺点:
虚拟内存访问比物理RAM访问慢得多
地址转换和页错误处理需要额外的处理开销
交换空间会占用辅助存储空间,减少用户可用存储
如果RAM不足以满足当前工作负载,可能会导致抖动
测试你的理解:
以下哪一项对虚拟内存的描述是正确的?
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中重点考察的核心内存管理概念,因此掌握它的核心术语、工作流程和常见易错点对考试成功至关重要。它建立在你对主存组织结构和操作系统功能的理解之上,连接到进程调度、内存保护和辅助存储设计等更广泛的主题。在这个子主题之外,你在学习操作系统安全、多任务和系统性能优化时会再次遇到虚拟内存概念。扎实掌握这个主题能帮助你应对考试中的简答题和扩展回答题。
