[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
|
Lists.xenproject.org is hosted with RackSpace, monitoring our |