页表在内存中的什么地方OS最清楚,MMU也应该是清楚的。而线性地址就是在寻址页表,这个线性地址也是由OS产生,然后cpu把这个线性地址传递给mmu,因为通过计算线性地址才能得到址页表集合中的索引,从而寻址这个页表。MMU把这个页表取出来,自己通过计算页表与线性地址的某些标志位,得出这是不是一个有效的页表。通常情况下MMU会从tlb中得到页表,如果计算得出这个页表无效,就会从内存中取出这个页表,并刷新tlb,将新页表写到TLB中。然后MMU解析出物理地址交给cpu。其实cpu对于MMU而言,cpu只负责把合法的线性地址交给MMU,而MMU只负责把合法的物理地址交给cpu。
原文:http://my.oschina.net/u/1375613/blog/490924