[Lguest] Lguest mechanism.

Rusty Russell rusty at rustcorp.com.au
Mon Jun 2 12:08:52 EST 2008


On Saturday 31 May 2008 08:16:34 Sujit Sanjeev wrote:
> Hi Rusty,
>
> I was wondering if there are any documents which could briefly explain the
> structure of the virtual address
> space of a normal user process executing within a guest.

No single document, but it's conceptually simple.  The documentation does 
explain this on the way through the code.

> Basically, I would like to understand how the traditional 3G/1G
> (user:kernel) virtual addressing is
> changed due to execution within a VM. How is the virtual address space of
> the VMM/host kernel included
> in the normal 4GB address space of a process?

The guest controls its virtual mappings as normal.  It is the "physical" pages 
of the guest which are really the virtual pages of the launcher:

Guest:				Host:

Page tables:			Offset:
virtual -> guest physical	  guest physical -> host virtual
				Page tables:
				  host virtual -> host physical

So the guest puts what (what it thinks are) physical page numbers in its page 
tables, and the host offsets and maps those to the real physical page numbers 
for the real page tables for the guest.

See "Guest" and "Host" part of documentation.

Cheers,
Rusty.



More information about the Lguest mailing list