[Date Prev][Date Next][Thread Prev][Thread Next][Date Index][Thread Index]

Re: [Xen-devel] Clarifiation about WP bit CR0 and copy on write in Xen



> As I remember ,and I am not sure abouth the details,
> in Linux (and other *NIX), when a process calls
> fork() it creates another process , and the pages of the old process
> are mapped to the new process; But they are marked
> as read only (for the new process)) and  only when the process tries to
> write
> to the page then a new page is created. (There is a page fault).So this
> fork()
> method uses "copy on write".
>
> Can anybody please elaborate more on this ? what is the simplification
> of "Copy on Write" here? How does it uses the WP bit ?
> Does XenoLinux (for example) has a different implementation of clone() than
> the usual implementation?

If you're in Ring 3 (userspace) then you'll always take a page fault for 
writing to a read only page.  The kernel can CoW the page and fix up your 
mappings.

Presumably (I've not actually checked) the kernel uses the WP bit to ensure 
the CoW fault happens if the kernel tries to write to some memory in the 
child process.  If WP wasn't set, the child could do a read system call and 
the kernel could copy data into a page that's shared with the parent process.  
It makes things simpler to use WP to ensure that a fault occurs (even in 
kernel mode) rather than having to programmatically check if a CoW should be 
done before the kernel writes to userspace.

As a result of this optimisation, guest OS kernels are written with the 
assumption that the WP bit is active.  Therefore it won't affect correct 
operations if Xen makes sure it's set.  If a guest OS relied on being able to 
ignore write protection whilst in the kernel, it would make it trickier to 
port to Xen.

Of course, under Vanderpool / Pacifica, any strange guests that do want WP 
switched off will be able to run happily.

Cheers,
Mark

_______________________________________________
Xen-devel mailing list
Xen-devel@xxxxxxxxxxxxxxxxxxx
http://lists.xensource.com/xen-devel


 


Rackspace

Lists.xenproject.org is hosted with RackSpace, monitoring our
servers 24x7x365 and backed by RackSpace's Fanatical Support®.