Jinlong's Blog

虚拟内存以及分页原理

  • 每一个进程都需要一个Page Table来保存本进程的虚拟页和物理页的映射关系。如果虚拟内存空间为4GB,一个Page Table Entry为4Bytes,则一个进程的Page Table则要4MB(2GB / 4KB * 4Bytes)的空间来存储,这个空间成本的开销是非常大的。
  • 为了解决这个问题,引入了2级(多级)Page Table,这样内存中只需要存进程的一级Page Table,二级Page Table只有在需要的时候才会被加载到内存,空间成本大大减少,但是却增加了系统处理Page Fault时候的成本(增加了时延)。
  • 为了解决这个问题,引入TLB(Translation Lookaside Buffer)。TLB相当于内存中的Page Table的硬件实现,保存的也是虚拟页到物理页的映射关系。当进程需要访存的时候,会先到TLB找,找不到再走内存中Page Table的路线,并利用LRU规则更新TLB中的内容。

/uploads/page.jpeg
Virtual Memory and Paging