> -----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
difficult).
>
> 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
machine".
--
Mats
>
> 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
Xen-users@xxxxxxxxxxxxxxxxxxx
http://lists.xensource.com/xen-users
|