当前位置:首页 > 虚拟化 > 正文

虚拟化底层原理


一、虚拟化技术的原理

虚拟机是对现实世界计算环境的抽象和模拟。VMM必须为每个虚拟机分配一组数据结构来管理其状态,包括虚拟处理器的整体寄存器集、物理内存使用情况和状态。当VMM调度虚拟机(例如虚拟设备)时,它会将其某些状态恢复到主机系统。例如,主机CR3寄存器存储的是VMM设置的页表物理地址,而不是GuestOS设置的值。主机处理器直接执行GuestOS的机器指令。GuestOS运行在低特权级别,因此当访问主机系统的特权状态(例如写入GDT寄存器)时,特权不足会导致主机处理器生成异常,该异常会自动引发。将执行权限返回给VMM。此外,VMM在外部中断到达时运行。
VMM可能需要首先将虚拟机的当前状态写回状态数据结构,分析虚拟机暂停的原因,然后代表GuestOS执行相应的特权操作。最简单的情况,当GuestOS修改CR3寄存器时,只需要更新虚拟机的状态数据结构。通常,在大多数情况下,VMM必须经过复杂的流程才能完成原本简单的任务。最后,VMM将执行权限返回给GuestOS,GuestOS从上次停止的地方继续执行或处理已经被VMM“填充”的虚拟中断和异常。这种运行虚拟机的经典方法称为“陷阱并模拟”。虚拟机对于GuestOS是完全透明的。但是,GuestOS不需要任何修改。然而,VMM设计变得更加复杂,并且整体系统性能受到显着影响。。


二、虚拟化技术原理是什么?虚拟化技术的实现原理:
虚拟化的概念很早就出现了。简而言之,虚拟化是获取某些程序并使它们看起来像其他程序的过程。
将此概念应用到计算机系统中,不同的用户可以看到不同的个体系统(例如,一台计算机可以同时运行Linux和MicrosoftWindows)。这通常称为完全虚拟化。
虚拟化还可以使用更复杂的格式,其中一台计算机似乎具有多种架构(对于一个用户来说,它是标准x86平台;对于另一个用户来说,它是IBMPowerPC®平台)。这种形式的虚拟化通常称为硬件模拟。
最后,一种更简单的虚拟化类型是操作系统虚拟化,其中一台计算机可以运行多个相同类型的操作系统。这种类型的虚拟化可以将多个服务器与一个操作系统隔离(这意味着它们必须全部使用相同类型和版本的操作系统)。
虚拟化技术的工作原理:
虚拟化解决方案的底层是要虚拟化的机器。机器可能支持也可能不支持直接虚拟化,在这种情况下需要虚拟机管理程序层支持。虚拟机管理程序(VMM)可以被视为平台硬件和操作系统的抽象。在某些情况下,该虚拟机管理程序是一个操作系统,在这种情况下,它称为主机操作系统。
虚拟机管理程序之上是来宾操作系统,也称为虚拟机(VM)。这些虚拟机是彼此隔离的操作系统,并将底层硬件平台视为自己的。但事实上,正是系统管理程序给他们造成了这种错觉。
当前虚拟化解决方案的问题在于并非所有硬件都能很好地支持虚拟化。较旧的x86处理器将根据执行范围对特定指产生不同的结果。这会产生一个问题,因为虚拟机管理程序应该只在最受保护的范围内运行。为此,VMWare等虚拟化解决方案会提前扫描要执行的代码,从而将这些指令替换为一些陷阱指令(trapinstructions),以便hypervisor能够正确处理它们。Xen可以支持无需修改的协作虚拟化方法,因为来宾知道它正在被虚拟化并且已经进行了修改。如果您想虚拟化,KVM将忽略这个问题,迫使您在较新的硬件上运行。