ScholarGate
助手

虚拟内存与分页

虚拟内存为每个程序提供其自身的大型、连续地址空间,硬件和操作系统通过固定大小的页将其映射到物理内存,从而提供隔离、保护以及比实际物理内存更大的内存错觉。

用 PaperMind 寻找选题即将推出Find papers & topics
Tools & resources
下载幻灯片
Learn & explore
视频即将推出

Definition

虚拟内存是一种内存管理技术,它通过页表将程序使用的虚拟地址映射到物理内存地址,将内存划分为固定大小的页,并允许页根据需要驻留在物理内存或后备存储中。

Scope

本主题涵盖通过页表进行的地址转换、缓存转换的转换旁路缓冲器(TLB)、页错误和按需分页、页替换和工作集原理,以及虚拟内存提供的保护。它处于计算机体系结构和操作系统的交界处。它不包括分页出数据的文件存储(文件系统)和片上数据缓存(缓存组织和策略),尽管它与两者都有交互。

Core questions

  • 虚拟地址如何通过页表转换为物理地址?
  • TLB如何加速转换,TLB未命中时会发生什么?
  • 页错误时会发生什么,按需分页如何处理?
  • 工作集概念如何指导页替换并防止颠簸?

Key concepts

  • 虚拟地址空间和物理地址空间
  • 页和页帧
  • 页表
  • 转换旁路缓冲器(TLB)
  • 页错误和按需分页
  • 页替换
  • 工作集和颠簸
  • 内存保护

Key theories

工作集模型
工作集是进程在最近一段时间内引用的一组页;将每个活动进程的工作集驻留在物理内存中可以避免颠簸,即过度的分页导致性能崩溃,并为替换和准入决策提供依据。

Mechanisms

程序的虚拟地址被分成页号和偏移量。页号索引页表(通常是多级的)以查找物理帧;TLB缓存最近的转换以避免每次访问都遍历页表。如果引用的页不在内存中,页错误会将控制权转移给操作系统,操作系统从后备存储中获取该页,并可能根据由局部性和工作集行为指导的替换策略逐出另一个页。

Clinical relevance

虚拟内存是现代操作系统的基础:它隔离进程以实现安全性和稳定性,允许多个程序共享物理内存,并允许运行比物理RAM更大的程序。TLB和页错误行为显著影响性能,而地址空间布局是保护和内存安全防御的基础。

History

虚拟内存起源于20世纪60年代初曼彻斯特的Atlas计算机,引入了分页和页错误机制。Denning在1968年提出的工作集模型对局部性和颠簸(thrashing)进行了原理性阐述。通过TLB和多级页表实现的硬件支持,以及后来的大页等功能,使虚拟内存普及到通用系统中。

Key figures

  • Peter J. Denning
  • Maurice Wilkes
  • John L. Hennessy
  • Abraham Silberschatz

Related topics

Seminal works

  • denning1968
  • hennessy2019
  • silberschatz2018

Frequently asked questions

页错误时会发生什么?
当程序访问当前不在物理内存中的虚拟页时,会发生页错误。硬件会捕获并转移控制权给操作系统,操作系统在后备存储中找到该页,将其加载到空闲或被逐出的帧中,更新页表,然后恢复程序运行,就像什么都没发生过一样。
什么是颠簸(thrashing)?
颠簸是指当活动进程的组合工作集超过物理内存时,性能急剧下降,系统大部分时间都花在将数据分页进出,而不是执行有用的工作。保持工作集驻留或减少负载可以避免颠簸。

Methods for this concept

Related concepts