Hi,
I have been told that virtualisation technology can be applied in various ways; Full virtualization, para-virtualization and Operating System partitioning. I feel a bit lost, how do I determine what technology is in use? For example, on my pc (Win 7) I am running my VMs on VMware Infrastructure Web Access (VMware server). Is this full virtualisation, because I didn’t have to make any changes to the guest OSes etc?
From "A Comparison of Software and Hardware Techniques for x86 Virtualization"
Keith Adams
VMware
Ole Agesen
VMware
Simple Binary Transaltion:
Our software VMM uses a translator with these properties:
Binary. Input is binary x86 code, not source code.
Dynamic. Translation happens at runtime, interleaved with execution of the generated code.
On demand. Code is translated only when it is about to execute. This laziness side-steps the problem of telling code and data apart.
System level. The translator makes no assumptions about the guest code. Rules are set by the x86 ISA, not by a higher-level ABI. In contrast, an application-level translator like Dynamo might assume that “return addresses are always produced by calls” to generate faster code. The VMM does not: it must run a buffer overflow that clobbers a return address precisely as it would have run natively (producing the same hex numbers in the resulting error message).
Subsetting. The translator’s input is the full x86 instruction set, including all privileged instructions; output is a safe subset (mostly user-mode instructions).
And adaptive Binary Translation:
... Finally, although the details are beyond the scope of this paper,
we observe that BT is not required for safe execution of most user
code on most guest operating systems. By switching guest execution
between BT mode and direct execution as the guest switches
between kernel- and user-mode, we can limit BT overheads to kernel
code and permit application code to run at native speed.
That shows that VMware does not use "full-virtualization", the VMM can switch betwwen native execution and Translation.
In addition in the TA08 presentation, VMworld 2009, VMware distinguishes between "full emulation" and "hosted virtualisation" like VMware Workstation.
I think it is important to know that difference as the "full virtualisation" is considered to be slow and when people think of VMware when they think about "full-virtualization" they might com eto the conclusuion VMware is slow and they need paravirtualization in any case.
AWo
VCP 3 & 4
Author @ vmwire.net
\[:o]===\[o:]
=Would you like to have this posting as a ringtone on your cell phone?=
=Send "Posting" to 911 for only $999999,99!=
VMware not really uses "full-virtualisation" as you call it, they use what is called transparant-paravirtualization, what is default for every product. You also have to distinguish if you talk about the CPU or the I/O devices/drivers.
Please be aware that in earlier days full virtualization meant that really the complete hardware was emulated which was slow. That is not the case with VMware! VMware doesn't emulate the CPU. So it would be better to refer to transparent-paravirtualization or binary translation.
You can run unmodifed (non-paravirtualized) guests on VMware without Intel-VT as VMWare takes place to intercept and translate hazardous (called binary translation) commands which a guest sends to the CPU. So not all commands are translated.
On Xenserver for example, which only can handle paravirtualized guests you need Intel-VT if your guest OS is not-paravirtualized , as Intel-VT takes this part.
If you run a paravirtualized guest OS the guest knows it is running on a hypervisor so does behave accordingly.
Depending on the VMWare product you are able to choose between the virtual driver interface VMware provides or paravirtuaized drivers.
With VMware Workstation you can run paravirtualized guest OS types in a paravirtualized mode. But you don't have to.
To answer your question: yes.
AWo
VCP 3 & 4
Author @ vmwire.net
\[:o]===\[o:]
=Would you like to have this posting as a ringtone on your cell phone?=
=Send "Posting" to 911 for only $999999,99!=
Addes a note, edited by AWo
Is this full virtualisation, because I didn’t have to make any changes to the guest OSes etc?
Yes that is correct. I wouldn't get bogged down in details, just keep it simple, the defaults are set for you, so as long as you use the defaults, you won't have any problem.
Hello.
You are correct - VMware Server would be full virtualization.
Check out the Wikipedia article on hypervisor. It is a great start to understanding these concepts.
Also check out the "[Understanding Full Virtualization, Paravirtualization, and Hardware Assist|http://www.vmware.com/files/pdf/VMware_paravirtualization.pdf]" white paper from VMware, as it digs a bit deeper.
Good Luck!
Thanks for all the helpful info, guys!
From "A Comparison of Software and Hardware Techniques for x86 Virtualization"
Keith Adams
VMware
Ole Agesen
VMware
Simple Binary Transaltion:
Our software VMM uses a translator with these properties:
Binary. Input is binary x86 code, not source code.
Dynamic. Translation happens at runtime, interleaved with execution of the generated code.
On demand. Code is translated only when it is about to execute. This laziness side-steps the problem of telling code and data apart.
System level. The translator makes no assumptions about the guest code. Rules are set by the x86 ISA, not by a higher-level ABI. In contrast, an application-level translator like Dynamo might assume that “return addresses are always produced by calls” to generate faster code. The VMM does not: it must run a buffer overflow that clobbers a return address precisely as it would have run natively (producing the same hex numbers in the resulting error message).
Subsetting. The translator’s input is the full x86 instruction set, including all privileged instructions; output is a safe subset (mostly user-mode instructions).
And adaptive Binary Translation:
... Finally, although the details are beyond the scope of this paper,
we observe that BT is not required for safe execution of most user
code on most guest operating systems. By switching guest execution
between BT mode and direct execution as the guest switches
between kernel- and user-mode, we can limit BT overheads to kernel
code and permit application code to run at native speed.
That shows that VMware does not use "full-virtualization", the VMM can switch betwwen native execution and Translation.
In addition in the TA08 presentation, VMworld 2009, VMware distinguishes between "full emulation" and "hosted virtualisation" like VMware Workstation.
I think it is important to know that difference as the "full virtualisation" is considered to be slow and when people think of VMware when they think about "full-virtualization" they might com eto the conclusuion VMware is slow and they need paravirtualization in any case.
AWo
VCP 3 & 4
Author @ vmwire.net
\[:o]===\[o:]
=Would you like to have this posting as a ringtone on your cell phone?=
=Send "Posting" to 911 for only $999999,99!=