MMU: GUESTOS将VA转换为PA,最终还要转换为HA。

连续转换两次太麻烦了,intel的amdcpu又实现了mmu虚拟化,称为shadow;直接将VA转换为了HA;
INTEL的技术叫做EPT,AMD的技术叫做NPT;
最终要将MMU的转换地址保存都TLB中;可以给每个虚拟机进行编号;每个编号打一个标签,起的名字叫tag。这样能够提高TLB的命中率;
这都是新cpu才有的技术。
上面的虚拟化技术,我们称为full 虚拟化技术。
可以把驱动程序做成系统调用,由虚拟机的内核直接跟系统调用打交道,这样就避免了hostos的其它模块再做处理了。这就是虚拟化的独到之处。这种虚拟化技术,我们称为半虚拟化技术。
半虚拟化的性能要高于全虚拟化技术。
cpu不支持虚拟化的技术称为模拟虚拟化;
cpu支持的虚拟化技术我们称为:HVM(Hypervisor call)(cpu辅助的虚拟化技术);
通常我们把这种提供系统调用的技术叫做:hypercall;明确说明这些系统调用是给虚拟机使用的。windows不允许修改内核,那就不能在半虚拟化技术中运行。
pv ON HVM:只是使用了io的虚拟化技术;
还有一种技术叫做io的透传技术;如下图所示:

虚拟化技术:
有宿主机的vmm;
虚拟化模型如下图所示:
xen这种xen不管理io设备,是通过一台管理机器进行管理;这种情况下xen是一种半虚拟化程序。
完全虚拟化与半虚拟化的区别是完全虚拟化的内核不需要进行修改即可。
QEMU就是个虚拟机软件,还可以跨越平台进行虚拟;
QEMU模拟创建虚拟硬盘,各种格式都支持。
通常我们使用xen的时候会结合qemu一块使用。xend/xm工具可以帮我们管理一个虚拟机;基于xen的图形化管理工具,比如说openstack;所谓的openstack就是个批量管理xen虚拟机的工具;
其实除了xen之外还有不下数十种管理工具。

virsh通过管理工具,能够帮助我们管理kvm、xen、qemu。
虚拟化技术之kvm
kvm:kernel-base virtual machine
基于内核的虚拟机。KVM是linux内核的一个模块。kvm能够让内核成为hypervisor。只不过这个虚拟机还能够kill掉;kvm只不过扩展了内核的功能,让其成为一个hypervisior;所以在其之上
还需要运行一个操作系统。KVM使用的是完全虚拟化技术;
qemu对cpu的模拟仍然是在内核空间进行模拟的;而kvm使用的是内核模块,它比qemu模拟出来的性能更好。所以通常我们使用的是kvm+qemu。而且kvm需要跑在64位的平台上面。
而kvm在内核2.6.20版本之后,就放入了内核里面。
红帽在6.0之后只支持kvm;
思杰:仅次于vmware,xen的商用是由思杰公司提供的;
windows的虚拟化技术起的名字叫做hyper-v。
kvm里面引入另外一种技术:virtio virio说白了就是io技术的半虚拟化技术。同时kvm也支持透传技术。
如果想在windows里面跑linux的程序,可以使用cywin,使用linux环境跑hadoop。