DragonFly kernel List (threaded) for 2009-02
Re: vkernel working
:doing in vkernel is shadowing of pages ie mapping the virtual page
:tables in vkernel to real page tables in real kernel , so does that
:mean we change the CR3 register to the real page tables on every
:context switch within the vkernel else how will a virtual address lets
:say 100 in vproc 1 and similarily in vproc 2 be differentiated with
:respect to its map on the physical memory.
Yes, any context switch reloads the CR3 register, including context
switches between the vkernel and virtualized user process (and back
:Secondly is kernelPTA the variable which points the offset into the
:As you had expalined about the page faults where in the real kernel
:traverses the virtual page table and then makes an appropriate entry
:into its page tables, but lets say tht vkernel forks a process then
:vkernel makes appropriate entries in its own virtual page tables so at
:tht time does it also makes a system call to make similar entries into
:the real page tables??
The virtual kernel has its own page table. KernelPTD points to the
self-map of the page directory for this page table, KernelPTA points
the base of the page tables mapped by KernelPTD. The page tables are
mapped linearly to make lookups easier.
When the virtual kernel makes modifications to its virtual page table
it informs the real system of the modifications via the mcontrol()
system call. This is a new system call added to DragonFly which is
an expanded version of madvise().