On Sun, 2 Sep 2012, Xin Tong wrote:
3. can two different processes have their CR3 being the same value
even though they have different first level page tables ?
Yes, if they are created by clone(CLONE_VM). In such case they share the
same mm_struct, and therefore mm_struct->pgd (which is exactly what is
loaded into cr3 in switch_mm()) is the same.
Is this the COW mechanism in linux. what if the cloned process need to
have set of its own pages later. do the CR3s for the 2 processes
become different at that point ?
That is a different story. COW is applied on fork() (i.e. spawning new
process), not on clone(CLONE_VM) (i.e. spawning new thread).