您好,欢迎访问三七文档
当前位置:首页 > 行业资料 > 其它行业文档 > 虚拟化技术与云计算2_CPU虚拟化
虚拟化技术与云计算虚拟化技术与云计算商彦磊商彦磊shangyl@bupt.edu.cn北京邮电大学网络技术研究院网络与交换技术国家重点实验室网络与交换技术国家重点实验室教学内容绪论算体系架构与虚拟化技术计算体系架构与虚拟化技术虚拟化概述虚拟化概述CPU的虚拟化内存虚拟化内存虚拟化I/O虚拟化虚拟化实施与应用虚拟化的现状与未来虚拟化的现状与未来CPU虚拟化处理器虚拟化概述可虚拟化条件指令模拟指令模拟CPU软件虚拟化方案CPU硬件虚拟化方案虚拟环境与可虚拟化条件虚拟环境由三部分组成:硬件、虚拟机监视器(VMM)及虚拟机)及虚拟机虚拟机可以视为物理机的一种高效隔离的复制:同质、高效、资源受控、高效、资源受控虚拟机的三个特点决定了不是所有体系结构都可以虚拟化虚拟机虚拟机监视器硬件特权指令与敏感指令多数计算机体系结构都有2个或以上的特权级,用来分隔系统软件和应用软件隔系统软件和应用软件。系统中有一些操作和管理关键系统资源的指令会被定为特权指令令特权指令只有在昀高特权级上能够正确执行如果在非昀高特权级上运行,特权指令会引发异常,处理器会陷入到昀高特权级器会陷入到昀高特权级在虚拟化后,有一类指令称为敏感指令,即操作特权资源的指令资源的指令所有特权指令都是敏感指令;并不是所有敏感指令都是特权指令陷入再模拟为使VMM完全控制系统资源,不允许直接执行虚拟机操作系统(客户OS)的敏感指令虚拟机操作系统(客户OS)的敏感指令陷入再模拟系统的所有敏感指令都是特权指令(前提)将VMM运行在昀高特权级,客户OS运行在非昀高特权权级陷入再模拟:当客户OS因执行敏感指令(此时也是特权指令)而陷入到VMM时VMM模拟执行引起异特权指令)而陷入到VMM时,VMM模拟执行引起异常的敏感指令虚拟化漏洞一个系统是否可虚拟化:关键在该系统对敏感指令的支持上所有指令都是特权指令:可虚拟化的结构所有指令都是特权指令:可虚拟化的结构无法支持在所有敏感指令上触发异常:不是可虚拟化的结构即存在“虚拟化漏洞”虚拟化的结构,即存在虚拟化漏洞一个结构存在虚拟化漏洞:存在敏感指令不属于特权指令存在虚拟化漏洞系统的虚拟化方案可采用一些方法弥补或避免虚拟化漏洞模拟的方法昀直接模拟的方法:昀直接解释执行:取一条指令,模拟出这条指令执行的效果再取下一条指令,再取下条指令不存在陷入问题,避免了虚拟化漏洞性能差性能差既要填补漏洞,又要保证性能,只能使用辅助手段:段:直接在硬件层面填补虚拟化漏洞通过软件避免虚拟机中使用到无法陷入的敏感指令3个概念1:虚拟寄存器未虚拟化的系统中,OS直接访问物理处理器,处于昀高特权级,可以控制系统的所有关键资源:寄存器、内存、I/O权级,可以控制系统的所有关键资源:寄存器、内存、I/O外设等虚拟化后,VMM接管物理处理器,以前的OS变成客户OS降级到非昀高特权级试图访问关键资源的指令成为敏感降级到非昀高特权级。试图访问关键资源的指令成为敏感指令。VMM通过多种方法保证这些敏感指令的执行能够触发异常通过多种方法保证这些敏感指令的执行能够触发异常,从而陷入到VMM进行模拟当客户OS试图访问关键资源时,该请求并不会真正发生在物理寄存器VMM会通过准确模拟物理处理器的行为将物理寄存器。VMM会通过准确模拟物理处理器的行为,将其访问定位到VMM为其设计与物理寄存器对应的“虚拟”的寄存器上。3个概念2:上下文进程上下文:某个时刻物理处理器中与运算相关的寄存器的状态构成了当前进程上下文存器的状态构成了当前进程上下文当OS进行调度时,当前进程的上下文(即寄存器状态)被保存在特定的内存区域中,而下一个进程的上下被保存在特定的内存区域中而下个程的下文被恢复到相应的寄存器中,从进程的角度看就好像从未被中断一样。虚拟处理器上下文更复杂客户OS本身包含许多敏感虚拟处理器上下文更复杂:客户OS本身包含许多敏感指令,会试图访问和修改物理处理器上定义的所有寄存器,这种访问和修改会被VMM重定位到虚拟处理器存器种访问和修改会被定位到虚拟处器上。对虚拟处理器,其上下文包括了更多的系统寄存器。3个概念3:虚拟处理器从客户OS来讲,其运行的虚拟处理器需要具备与其“期望”的物理处理器一致的功能和行为期望的物理处理器致的功能和行为从VMM角度,虚拟处理器是其需要模拟完成的一组功能集合。虚拟处理器的功能可以由物理处理器和VMM拟共同完成对非敏感指令,物理处理器直接解码处理其请求,并将相关效果直接反映到物理寄存器上;相关效果直接反映到物理寄存器上;对于敏感指令,VMM负责陷入再模拟,从程序角度也就是一组数据结构与相关处理代码的集合数据结构用于存储虚拟寄存器的内容相关处理代码负责按照物理处理器的行为将效果反映到虚拟寄存器上。VMM的陷入模式VMM陷入利用了处理器的保护机制,使用中断和异常来完成的,基于处理器保护机制触发的异常基于处理器保护机制触发的异常敏感指令的执行虚拟机主动触发异常。即陷阱异步中断,包括处理器内部中断源和外部的设异步中断,包括处理器内部中断源和外部的设备中断源CPU虚拟化方案CPU软件虚拟化方案模拟执行-基于软件的完全虚拟化解释执行解释执行代码扫描与修补二进制代码翻译二进制代码翻译直接源代码改写-类虚拟化CPU硬件虚拟化方案CPU硬件虚拟化方案CPU软件虚拟化方案在硬件设计未考虑虚拟化而导致虚拟化漏洞时,首先考虑到基于软件方式实现虚拟化两种可行的基于软件的虚拟化解决方案:两种可行的基于软件的虚拟化解决方案:模拟执行-基于软件的完全虚拟化接代虚直接源代码改写-类虚拟化模拟技术所有的虚拟化形式都可以用模拟来实现。三种常见的模拟技术:技术:解释执行是昀简单昀直接的模拟实现方式代码扫描与修补二进制代码翻译二进制代码翻译不同体系结构的虚拟化比较困难,通常使用解释执行在一种硬件体系结构上模拟出另一种不同硬件体系结构的运行在种硬件体系结构上模拟出另种不同硬件体系结构的运行环境同一体系结构模拟:多数指令不需要被模拟执行而是直接在硬件上执行可以使用效率更高的虚拟化方法在硬件上执行。可以使用效率更高的虚拟化方法:代码扫描与修补和二进制代码翻译。模拟器架构解释执行解释执行是昀简单的一种模拟技术取一条执行,模拟出这条指令执行的效果再取一条指令周而复始果,再取条指令,周而复始。从一定程度上解决陷入再模拟指令的正常执行与解释执行解释执行优缺点模拟取指/译码/执行软件流水线优点容易实现容易实现复杂度昀低缺点慢慢扫描与修补虚拟机中模拟的CPU与物理CPU体系结构相同时,大多数指令可以映射到物理CPU而直接执行接执行扫描与修补:多数指令直接在物理CPU执行把OS代码中的敏感指令替换为跳转指令,把OS代码中的敏感指令替换为跳转指令或会陷入到VMM中去的指令,一旦运行到敏感指令处控制流就会进入VMM中,由VMM代为模拟执行代为模拟执行扫描与修补的流程VMM在虚拟机开始执行每段代码之前对其进行扫描解析每一条指令查找到特权指进行扫描,解析每一条指令,查找到特权指令和敏感指令补丁代码会在VMM中动态生成通常每一补丁代码会在VMM中动态生成,通常每个需要修补的指令会对应一块补丁代码敏感指令被替换成一个外跳转从虚拟机跳敏感指令被替换成个外跳转,从虚拟机跳转到VMM的空间里,在VMM中执行动态生成的补丁代码当补丁代码执行完成后,执行流再跳转回虚拟机中的下一条代码继续执行扫描与修补原理扫描与修补的优缺点异常的处理较简单实现较简单实现较简单性能损失小特权指令和敏感指令都被模拟执行,各条指令的模拟执行时间可能会很短,也可能会较长每个补丁都引入额外的跳转会降低代码的局部性每个补丁都引入额外的跳转,会降低代码的局部性扫描与修补直接在虚拟机内存中进行代码修补,需维护份与补丁对应的原始代码的备份以在需要时将护一份与补丁对应的原始代码的备份,以在需要时将代码恢复二进制代码翻译二进制代码翻译(BT)在VMM中开辟一块代码缓存,将代码翻译好放在其中客户OS代码不会直接被物理CPU执行客户OS代码不会直接被物理CPU执行,所有要被执行的代码都在代码缓存中二进制翻译的单位:基本块BT以基本块为单位翻译代码模拟器动态按需读入二进制代码进行翻译,将翻译好的目标代码存放在模拟器开辟的内存空间(称为代码缓存)间(称为代码缓存)动态基本块源代码中的指令与翻译后的代码用某种映射源代码中的指令与翻译后的代码用某种映射关系进行关联常用的是哈希表由源代码的PC值通过哈希函常用的是哈希表:由源代码的PC值通过哈希函数计算查表得到其在代码缓冲区中的位置翻译模拟器对读入的二进制代码不作限制应用程序的代码OS内核代码OS内核代码读入的二进制代码可能包含所有的x86体系结构的指令模拟器将其翻译输出为系结构的指令,模拟器将其翻译输出为x86指令的子集,即不包含特权指令和敏感指令,能够运行在用户态二进制代码翻译二进制代码翻译BT技术的难点BT技术在处理过程中会遇到困难的几种情况:自修改代码(SelfModifyingCode)自修改代码(SelfModifyingCode)自参考代码(SelfReferentialCode)精确异常(PreciseExceptions)实时代码实时代码BT技术的优化BT在发展过程中积累了以下优化技术来提高整体性能:基本块串联基本块串联自适应翻译指令缓存布局优化模拟方式的优势与不足模拟方式的优势VMM可以将虚拟机整个执行过程置于控制中,VMM执行每一条指令都进行模拟,不会漏过需要执行每条指令都进行模拟,不会漏过需要模拟的敏感指令模拟技术应用范围广模拟技术应用范围广系统级应用程序级应用程序级模拟方式的缺陷效率较低CPU的硬件辅助虚拟化硬件辅助虚拟化CPU虚拟化的硬件支持CPU虚拟化的硬件支持IntelVT-x的思想两种操作模式VMCSVMCS虚拟化新指令VMCS概念概念VMCS与物理CPU的绑定VMX操作模式VM-EntryVM-ExitCPU虚拟化的实现硬件辅助虚拟化硬件辅助虚拟化:在CPU、芯片组以及I/O设备等硬件中加入专门针对虚拟化的支持以简化虚拟化的实现中加入专门针对虚拟化的支持,以简化虚拟化的实现,提高虚拟化的效率在硬件中加入虚拟化支持的原因在硬件中加入虚拟化支持的原因:原有硬件体系结构在虚拟化方面存在缺陷,导致单纯软件虚拟化方法存在问题;虚拟化方法存在问题;某些虚拟化功能尽管可用软件方法来实现,但实现复杂;某些通过软件方法实现的虚拟化功能性能不佳Intel提供了VT-x(IntelVirtualizationTechnologyforx86)的CPU虚拟化技术IntelVT-x架构VT-x的基本思想可如下如所示:VM1VM2VMRing3Ring3Ring3VMX非根操作VM1VM2VMnRing0Ring0Ring0非根操作模式…VMCS1VMCS2VMCSnVMExit…Ring3vmiaunch/Ring0VMX根操作vmiaunch/Ring0vmresume模式IntelVT-x新模式的引入VT-x引入了新的模式:CPU指令的虚拟化通过“陷入再模拟”实现IA32架构有些敏感指令不能通过“陷入再模拟IA-32架构有些敏感指令不能通过“陷入再模拟”的方式处理,导致了虚拟化漏洞新模式(非根模式)下所有敏感指令的行为都被重新定义使它们不经虚拟化就直接运行或被重新定义,使它们不经虚拟化就直接运行或通过“陷入再模拟”的方式处理IntelVT-x的两种模式VT-x引入了两种操作模式,统称为VMX操作模式:根操作模式(VMXRootOperation):VMX运行所处的模式,简称根模式非根操作模式(VMXNon-RootOperation):客户机运行所处的模式,简称非根模式两种操作模式与IA32特权
本文标题:虚拟化技术与云计算2_CPU虚拟化
链接地址:https://www.777doc.com/doc-4370885 .html