1、软件虚拟化和硬件虚拟化:实现虚拟化的重要一步在于:虚拟化层必须能够截获计算元件对物理资源的直接访问,并将其重定向到虚拟资源池中。硬件虚拟化,就是物理平台本身提供了对特殊指令的截获和重定向的硬件支持
2、准虚拟化与全虚拟化:改动客户操作系统,使他以为自己运行在虚拟环境下,能够与虚拟机监控协同工作叫做准虚拟化,准虚拟化弱化了对虚拟机特殊指令的被动截获要求,需要修改客户机操作系统的源代码实现主动通知
3、内存管理:内存页面共享通过一项名为内核同页合并ksm)的内核功能来支持。KSM扫描每个虚拟机的内存,如果虚拟机拥有相同的内存页面,将它合并到一个在虚拟机之间共享的页面,仅存一个副本。如果一个客户机尝试更改这个共享页面,他讲得到自己的专用副本
4、kvm的作用:kvm仅支持硬件虚拟化,他打开并初始化系统硬件以支持虚拟化的运行,在被内核加载的时候,kvm模块会先初始化内部的数据结构,检测当前的cpu,打开cpu控制寄存器的cr4中的虚拟化控制开关,执行VMXON指令将宿主操作系统置于虚拟化模式种的根模式,最后,kvm模块创建特殊设备/dev/kvm并等待来自用户空间的命令,接下来虚拟机的创建和运行将是一个用户空间的程序qemu与kvm配合交互过程
5、处理器中的内存管理单元(MMU)是通过页表的形式将程序运行的虚拟地址转换成为物理内存地址。在虚拟机模式下,内存管理单元的页表则必须在一次查询的时候完成俩次地址转换,客虚地址-->客物地址-->真物地址
解决方案:影子页表,客户机运行的时候,处理器使用的页表不是客户机操作系统维护的页表,而是kvm模块根据这个页表维护的另外一套影子页表,但他开销蛮大的,intel的