1 如果每次程序执行上下文切换时TLB都会被刷新,那么当该程序再次运行时,TLB会在哪里重新加载其表?此外,如果表被刷新,那么其他程序如何阻止写入属于该程序的内存? memory cpu — tony_sid source
1 它从空开始,并在访问发生时重新加载。 TLB是一种优化,可以避免读取较慢的页表信息以定位应用程序内存; 特别是,内存访问控制是从页表而不是TLB完成的。 你清除它的原因是双重的:因为如果你没有,那么下一个进程的访问可能会进入你进程的内存(与你的假设完全相反!),并且因为它可以被用来窥探你的进程的记忆和/或活动。 — geekosaur source 我在一本书中读到TLB有自己的表,只有在自己的表中找不到任何内容时才会进入页表。 — tony_sid 2011年
0 TLB从页表重新加载。页表始终具有最新映射。 像处理器缓存一样,TLB只是页表中的内容的副本,因此刷新它不会丢失信息。此外,即使刷新TLB,一个程序的内存也不会分配给其他程序,因此它们无法写入该程序的内存。 有关TLB的详细信息,请参阅我关于TLB的调查报告。 — user984260 source