虚拟化的实现方式:全软件模拟 虚拟化层翻译 容器虚拟化
1,全软件模拟 缺点:效率低,一般用于科研,不适合商业推广,有早期的QEMU和Bochs
2,虚拟化层翻译:
1>全虚拟化 :将非内核态指令模拟成内核态指令再交给cpu处理,中间要经过两重转换,因此效率低,但优点是不会修改GuestOS,所以全虚拟化的VMM可以安装绝大部分操作系统
全虚拟化架构下的GuestOS运行在cpu的用户态(Ring 3),因此不能直接操作硬件设备。为解决这一问题,引入 特权解除和陷入模拟机制
特权解除:当GuestOS需要运行内核态指令时,VMM会动态的捕获该指令,并调用若干运行在非内核态的指令来模拟该内核态指令的效果,从而将核心态的特权解除,但是并不能完美解决所有问题,所以引入陷入模拟机制
陷入模拟:HostOS和GuestOS都存在部分敏感指令(reboot shudown等),为避免误用,陷入机制解决方法:如果GuestOS中执行了需要运行在内核态中的reboot指令,则VMM首先会将该指令获取,检测并判定为敏感指令,然后启动陷入机制模拟,将敏感指令reboot模拟成一个只对GuestOS进行操作的,非敏感的,并且运行在非核心态的reboot指令,并将其交给CPU处理,最后由CPU准确执行重启GuestOS的操作
典型的全虚拟化软件:VMWare Hyper-V KVM-x86
2>半虚拟化
半虚拟化技术是需要G