Messages in this thread | | | Date | Tue, 04 Sep 2012 16:48:47 +0800 | From | Cong Wang <> | Subject | Re: linux page table |
| |
On 09/03/2012 02:26 AM, Jiri Kosina wrote: > 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). >
Yeah, and unshare(2) does not implement the flag that reverses the effects of CLONE_VM.
| |