虚拟化知识总结
先了解一下虚拟机监视器(vvm)
虚拟机监视器:负责对虚拟机提供硬件资源抽象,为客户操作系统提供运行环境。
服务器虚拟化
根据虚拟化实现的方式不同,服务器虚拟化有两种类型:
寄宿虚拟化:虚拟机监视器是运行在宿主操作系统之上的应用程序,由于虚拟机对资源的操作需要通过宿主操作系统来完成,因此其性能通常较低。如vm workstation
原生虚拟化:虚拟机监视器运行在硬件之上而不是宿主操作系统,性能好但实现更复杂。如xen
寄宿虚拟化 | 原生虚拟化 | |
是否依赖与宿主操作系统 | 完全 | 不 |
性能 | 低 | 高 |
实现的难以程度 | 易 | 难 |
CPU虚拟化
CPU虚拟化技术把物理CPU抽象成虚拟CPU,但是任意时刻一个物理CPU也只能运行一个虚拟CPU的指令。
cpu处理器的运行级别
在x86体系结构中,处理器有4个运行级别,分别为Ring 0、Ring 1、Ring 2和Ring 3。Ring 0级别具有最高权限,可以执行任何指令而没有限制。应用程序一般运行在Ring 3级别。操作系统内核态代码运行在Ring 0级别,因为它需要直接控制和修改CPU的状态。
虚拟化难点
客户操作系统中的特权指令如果不运行在ring0级别将会出错或者失效。
CPU虚拟化解决方案
全虚拟化:采用二进制代码动态翻译技术来解决客户操作系统的特权指令问题
半虚拟化:通过修改客户操作系统来解决虚拟机执行特权指令的问题。
硬件辅助虚拟化:这项技术是一种硬件方案,支持虚拟化技术的CPU加入了新的指令集和处理器运行模式来完成与CPU虚拟化相关的功能。
内存虚拟化
内存管理单元(MMU):管理虚拟存储器,物理存储器,也负责虚拟地址映射为物理地址。
内存虚拟化实现方法
影子页表法:首先客户操作系统(虚拟机)维护着自己的页表,同时,虚拟机监视器也为每台虚拟机维护着一个对应的页表,这个页表中记录的是真实的机器内存地址。虚拟机监视器中的页表是以客户操作系统维护的页表为蓝本建立起来的,类似数据库中的两个表相关联
页表写入法:当客户操作系统创建一个新页表时,需要向虚拟机监视器注册该页表,此时,虚拟机监视器将剥夺客户操作系统对页表的写权限,并向该页表写入由虚拟机监视器维护的机器内存地址。