Linux kernel 为什么内核向所有其他处理器发送tlb invalidate中断,而修改的页表是针对运行的进程的

Linux kernel 为什么内核向所有其他处理器发送tlb invalidate中断,而修改的页表是针对运行的进程的,linux-kernel,kernel,tlb,multiprocessor,Linux Kernel,Kernel,Tlb,Multiprocessor,当一个进程的页表条目被删除时,内核线程向所有其他处理器发出tlb分解中断,以使其他处理器上的tlb失效?但是,页面表不是特定于此进程的吗?我们为什么要进行tlb击落呢?您的进程可能有多个线程,它们共享同一个页面表,它们可能在不同的处理器中执行。即使只有一个线程,也需要执行分解,因为进程可能在内核/处理器之间移动。操作系统可以跟踪这一点,并且只向该进程过去所在的内核发送快照。本质上,它是在软件中实现缓存一致性。

当一个进程的页表条目被删除时,内核线程向所有其他处理器发出tlb分解中断,以使其他处理器上的tlb失效?但是,页面表不是特定于此进程的吗?我们为什么要进行tlb击落呢?

您的进程可能有多个线程,它们共享同一个页面表,它们可能在不同的处理器中执行。

即使只有一个线程,也需要执行分解,因为进程可能在内核/处理器之间移动。操作系统可以跟踪这一点,并且只向该进程过去所在的内核发送快照。本质上,它是在软件中实现缓存一致性。