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

RE: [Xen-users] Clear definitions

  • To: "Fabio Viero" <fviero@xxxxxxxxx>, Xen-users@xxxxxxxxxxxxxxxxxxx
  • From: "Petersson, Mats" <Mats.Petersson@xxxxxxx>
  • Date: Wed, 4 Apr 2007 19:28:34 +0200
  • Delivery-date: Wed, 04 Apr 2007 10:27:50 -0700
  • List-id: Xen user discussion <xen-users.lists.xensource.com>
  • Thread-index: Acd22vPnu3h09URpSbq/nQb/28r5cQAARfvw
  • Thread-topic: [Xen-users] Clear definitions


> -----Original Message-----
> From: xen-users-bounces@xxxxxxxxxxxxxxxxxxx 
> [mailto:xen-users-bounces@xxxxxxxxxxxxxxxxxxx] On Behalf Of 
> Fabio Viero
> Sent: 04 April 2007 17:51
> To: Xen-users@xxxxxxxxxxxxxxxxxxx
> Subject: [Xen-users] Clear definitions
> Hi list
> I´m really new to Xen. My question is probably an easy one. First, yes
> i went through the documentation and also came across some messages
> that helped me clarify (not so clear actually) my next few question.
> They are:
> What exactly is a "modified guest". I know linux and BSD´s fall in
> this category. But, well i can run an unmodified version of linux,
> paravirtualized, with Xen don´t?

A modified guest is the same as a paravirtualized guest (a paravirtual guest 
runs with a modified kernel, to put it in a different way). 
> Talking about windows, i know i nedd Intel-VT or AMD-V to use it. Will
> Windows run paravirtualized or full virtualized in this environmet? I
> think "full virtualized" is the answer, but if anyone could go a
> little bit further on that...thanks!!

Short answer: Windows is only possible to run in "full-virtualization". 

Long answer: Whilst it's technically possible to run Windows (or almost any 
other OS) on top of Xen as a para-virtual guest, practical things such as 
contracsts and laws makes the availability of the source-code and/or the 
relevant changes necessary to make the OS para-virtual makes it (nearly) 
impossible to get a para-virtual Windows onto your machine [as in, not only do 
you need to have source-code to Windows - which in itself is generally 
difficult to get, but you also need the relevant changes to make it 
para-virtual]. And if you did have access to those bits, you still can't 
distribute the resulting binary (but you could use it yourself). 

And some more about the Intel VT/AMD-V technologies. Essentially this is what 
enables full-virtualization without other complicated technologies (such as 
"binary translation" or "binary patching" (the latter is a form of 
para-virtualization, but based on replacing the machine-code inside the 
guest-OS, rather than modifying the source-code of the operating system). The 
virtualization technology essentially allows the hypervisor to tell the 
processor to executed code in a guest-OS, but when certain events happen (such 
as certain exceptions or reads/writes of some special register(s)) the 
processor should stop executing and get back to the hypervisor. This way, the 
hypervisor can keep track of things and make sure the guest is behaving itself. 

Also, the hypervisor will "lie" to the guest about things like where it's 
memory is - almost all OS's expect memory to start at zero and grow to some 
fixed size without too many gaps or missing bits, but if you run multiple OS's 
in the machine, that's not going to be the case - and the memory may not be in 
one contiguous section either: imagine that you start three 256MB guests, then 
terminate two of those guests, but leave the "middle" one - now start a single 
512MB guest: you can't do that if you require the memory to be contiguous, 
because there isn't a single 512MB section available. So the hypervisor will 
"hide" the truth and tell the OS "what it wants to hear", and then make the 
necessary modificiations as and when it needs to (for example maintaining two 
page-tables, one that the guest thinks is the page-table, and one that is given 
to the processor). 

> What is involved in "modify" a guest OS?

Basicly, take some parts of the guest-OS (source-code) and rewrite the direct 
accesses to for example page-tables and a bunch of other things to make them 
virtualization aware. This is on the scale of "difficult programming" somewhere 
around 8-10 range on a 0-10 scale of difficulty (where higher number -> more 

> and last but not least. I came across a number of definitions for
> "paravirtualized" or paravirtualization. I know it provides an API for
> the virtual machines to interface with rather a full abstraction of
> the underlying hardware. I guess that´s not all about it. Once more,
> if someone could go furthur with an explanation.

Well, I think "providing an API/interface for a hypervisor (virtual machine 
monitor) to a guest-OS" is a pretty good definition. I don't believe there is a 
STRICT definition of para-virtualization as such - it's simply "to make the OS 
more or less aware that it's running in a virtual environment so that it can 
co-operatively perform some of the tasks necessary to make it run as a virtual 

> I would like to excuse for these sort of basic question and also wish
> to thank for any answar i might get.
> Cheers
> _______________________________________________
> Xen-users mailing list
> Xen-users@xxxxxxxxxxxxxxxxxxx
> http://lists.xensource.com/xen-users

Xen-users mailing list



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