虚拟内存

1. 地址翻译

地址翻译由 MMU(Memory Management Unit) 内存管理单元进行。

1.1 基本参数

符号 描述
N=2nN = 2^n 虚拟地址空间的地址数量
M=2mM = 2^m 物理地址空间的地址数量
P=2pP = 2^p 页的大小(字节)

1.2 虚拟地址(VA)

符号 描述
VPO 虚拟页面偏移量(字节)
VPN 虚拟页号
TLBI TLB 索引
TLBT TLB 标记
  • TLB(Translation Lookaside Buffer):翻译后背缓冲区/快表,是一个小的虚拟内存地址 VP 的缓存。

1.3 物理地址(PA)

符号 描述
PPO 物理页面偏移量(字节)
PPN 物理页号
CO 缓冲块内的字节偏移量
CI 高速缓存索引
CT 高速缓存标记
  • PT(Page Table):页表是一个页表条目(PTE)数组,将虚拟页映射到物理页。

1.4 页面命中

1.5 缺页异常

2. 内存管理

在磁盘和内存之间的页面调度采用按需页面调(demand paging),即当有不命中发生时,才换入页面。按需调度和独立的虚拟地址空间(即每个进程拥有独立的虚拟地址空间)的结合,对系统中内存的使用和管理造成了深远的影响。
VM 简化了链接和加载、代码和数据共享,以及应用程序的内存分配。

  • 简化链接:独立的地址空间允许每个进程的内存映像使用相同的基本格式,而不管代码和数据实际存放在物理内存的何处。

  • 简化加载:虚拟内存还使得容易向内存中加载可执行文件和共享对象文件。

  • 简化共享:独立地址空间机制为操作系统提供了一个管理用户进程和操作系统自身之间共享的一致机制。即通过将不同进程中适当的虚拟页面映射到相同的物理页面,从而实现多个进程共享这部分代码。

  • 简化内存分配:虚拟内存为向用户进程提供一个简单的分配额外内存的机制。由于页面工作的方式,操作系统分配物理内存时,没有必要分配连续的物理内存页面。


本博客所有文章除特别声明外,均采用 CC BY-SA 4.0 协议 ,转载请注明出处!