|
|
|
|
| Simple summary of virtualization |
 Simple summary of virtualization - caritas [ 2007-04-16 15:21 | 4,995 byte(s)]
 Re: Simple summary of virtualization - gogoliu [ 2007-05-22 19:17 | 553 byte(s)]
 Re: Simple summary of virtualization - 1help1 [ 2007-05-24 15:49 | 968 byte(s)]
 Re: Simple summary of virtualization - nxin [ 2007-05-23 14:03 | 91 byte(s)]
 Re: Simple summary of virtualization - yhpyhppp [ 2007-05-15 11:43 | 8 byte(s)]
 Re: Simple summary of virtualization - huza [ 2007-04-23 08:25 | 10 byte(s)]
 Re: Simple summary of virtualization - tchaikovsky [ 2007-04-18 17:58 | 5 byte(s)]
 Re: Simple summary of virtualization - 1help1 [ 2007-04-18 15:00 | 20 byte(s)]
|
|
|
|
[Original]
[Print]
[Top]
|
1. Virtualization level
a. Timing-accurate virtualization
The timing logic is simulated by software. It is mainly used for chip verification. The performance is lowest.
b. Full virtualization
It is instruction-accurate CPU virtualization and ecessary peripheral virtualization. The "unmodified" guest operating system can be run on it.
Examples: Bochs, Qemu, Skyeye, Xcopilot.
c. Para-virtualization
It is instruction-accurate CPU virtualization and ecessary peripheral virtualization but with some modification to real hardware architecture, so that the guest operating system must be "modified" to run on it.
Examples: Xen, UML.
d. Operating system level virtulization
Some instruction (most non-privilege instruction) of CPU and the operating system interface (mostly system call interface) is virtualized. The target application can be run on it. Same or different operating system interface as that of host operating system may be virtualized.
Examples with same OS interface as that of host OS: Linux vserver, FreeBSD jail, Qemu user space emulation.
Examples with different OS interface as that of host OS: Linux binary compatibility support on FreeBSD, Wine.
2. Implementation
a. Hardware based or OS based implementation
Some virtulization systems work as a user space application (perhaps with some kernel space components) on a host OS, which are called OS based implementation, while others work on bare hardware directly, which are called hardware based implementation.
b. Interpretation based implementation
It is mainly used for full virtualization. The core of virtualization system usually is a loop to fetch an instruction, interpret the instruction, execute the instruction and advance the PC, perhaps with some pipeline handling.
Interpretation based virtualization system is usually good on portability, if it is programmed in portable language.
Example: Bochs, Skyeye, Xcopilot
c. Dynamic translation based implementation
In dynamic translation based virtualization system, the target binary code is translated into host binary code first, then the translated code is executed on host CPU directly.
In general, its performance is better than interpretation based implementation with good portability.
It can be used for full virtualization, in which, both the kernel space code and user space code is translated before execution. It can also be used for operating system level virtualization, in which, only the user space code is translated and the OS interface (system call) is implemented through calling the host system OS interface directly.
Examples: Qemu, Qemu user space virtualization.
d. Monitor based implementation
In monitor based virtualization system, the target CPU must be same as host CPU. The target code is executed on host CPU directly but usually with lower priority. Some privileged instruction or some resource access will trap into monitor, which usually is executed with highest priority, then, the monitor do some check and complete the privileged operation or resource access for target code and return to guest code.
Its performance can reach nearly native, but its main constraint is that the guest CPU must be same as the host CPU.
Examples: KQemu.
e. Para-virtualization implementation
On para-virtualization system, the "unmodified" guest code can not be run directly. Instead, usually the guest OS must be "modified" to be implemented based on para-virtualization system instead of real hardware. Some privileged operation or resource access are done
through calling the para-virtualization system instead of direct hardware programming.
Examples: Xen, UML, coLinux.
f. Implement the API of another OS in user space
This can be used for operating system level virtualization.
Examples: wine.
g. Implement the system call of another OS in kernel space
This can be used for operating system level virtualization.
Examples: Linux binary compatibility support on FreeBSD.
h. Partition resources between processes
Some resources such as file system, CPU time, network address and memory is partitioned between processes. Such that, some processes works on the restricted resources only.
Examples: Linux vserver, FreeBSD jail.
|
|
|
----
|
|
[Original]
[Print]
[Top]
|
|
[Original]
[Print]
[Top]
|
>VMware、VirtualBox、Vitual PC这些不依赖于CPU虚拟化扩展的全虚拟化技术,跟xen、kvm这些依赖于CPU虚拟化扩展的全虚拟化技术有什么不同呢?
个人的理解:
就VMware、VirtualBox而言,其实现的细节并不是 类似于 SKYEYE,SIMOS等模拟器,一条指令一条指令的模拟,而是 将要模拟的 GUEST的代码直接在HOST上执行。但是它们是建立在有 HOST OS的基础上。
XEN 一开始出现的版本并没有 使用了INTEL VT技术,它运行在 hardware上,这是与VMware区别。并且它的着眼点是怎么能管理 运行在上层的多个OS,而不是指令集的模拟。
KVM是运行在OS上的,类似于VMware,不过其使用的是开源的 KQEMU来作为其模拟的引擎。
为什么VMware VirtualBox没有采用 CPU虚拟化的方案,那是因为 CPU虚拟化出现的时间还不长。如果他们愿意的话,当然可以为 这样的CPU开发一个版本。
XEN 一开始没有采用CPU虚拟化技术(因为一开始还没有这样的技术),现在XEN已经可以支持CPU虚拟化了。
kvm从一开始就只支持CPU虚拟化。
|
|
|
[Original]
[Print]
[Top]
|
|
|