内存分页后,单页表需要覆盖一个进程所有的虚地址,页表占用的内存太过多了。于是解决方式就是多级页表。
image.png

  1. MMU根据 虚拟地址中的一级页号,从一级页表中找到2级页表的物理内存地址
  2. 取到这个2级页表后,再根据二级页号,从这个2级页表中获取物理地址。

哪点优化了?
1级页表只需要覆盖进程的总页数,2级页表在需要的时候才加载入内存。
这样1级页表占用空间极小。2级页表也只有部分加载到物理内存。

TLB的引入

多级分页是解决了页表占用内存空间多的问题,但是我从虚拟地址到实际物理内存地址的转换多了好多步。
于是乎,缓存呗,减小查询页表的时间。将常用的页表缓存起来。
TLB又称⻚表缓存、转址旁路缓存、快表。
image.png