日期:2014-05-16  浏览次数:20776 次

linux内核刷新页表问题
我在understanding the linux kernel中看到
As a general rule, any process switch implies changing the set of active page tables. Local TLB entries relative to the old page tables must be flushed; this is done automatically when the kernel writes the address of the new Page Global Directory into the cr3 control register. The kernel succeeds, however, in avoiding TLB flushes in the following cases:

1.When performing a process switch between two regular processes that use the same set of page tables (see the section "The schedule( ) Function" in Chapter 7).

2.When performing a process switch between a regular process and a kernel thread. In fact, we'll see in the section "Memory Descriptor of Kernel Threads" in Chapter 9, that kernel threads do not have their own set of page tables; rather, they use the set of page tables owned by the regular process that was scheduled last for execution on the CPU.

第1点是不是说明当两个进程使用相同的pagetable时,他们起始的虚拟地址也是相同的!
------解决方案--------------------
是的,我觉得可能是fork出来的进程,COW机制下,PGD是一样的。