资源描述:
《Virtualization and Hypervisor》由会员上传分享,免费在线阅读,更多相关内容在学术论文-天天文库。
1、VirtualizationandHypervisorKVM,XEN,DOCKERetc.BarrySong虚拟化背景知识与软硬件GeraldJ.Popek和RobertP.Goldberg1974年的论文•FormalRequirementsforVirtualizableThirdGenerationArchitectures1.等价性(Equivalence):应用程序在VMM上的虚拟机执行,应与物理硬件上的执行行为相同。2.资源控制(ResourceControl):物理硬件由VMM全权控,VM及V
2、M上的应用程序不得直接访问硬件。3.有效性(Efficiency):在虚拟执行环境中应用程序的绝大多数指令能够在VMM不干预的情况下,直接在物理硬件上执行。GeraldJ.Popek和RobertP.Goldberg1974年的论文(cont.)•FormalRequirementsforVirtualizableThirdGenerationArchitectures•如果指令集支持虚拟化就必须满足所有的敏感指令都是特权指令•不是特权指令的敏感指令,称为临界指令(CriticalInstructions),
3、x86至少有17条敏感指令是不会引发异常的非特权指令;ARM也同样拥有拥有非特权的敏感指令GeraldJ.Popek和RobertP.Goldberg1974年的论文(cont.)•x86处理器架构起先并不满足波佩克与戈德堡虚拟化需求(PopekandGoldbergvirtualizationrequirements),这使得在x86处理器下对普通虚拟机的操作变得十分复杂。-SGDT,SIDT,SLDT,SMSW,PUSHF,POPF,LAR,LSL,VERR,VERW,POP,PUSH,CALL,JMP,I
4、NT,RET,STR,MOV•Architecturesthatmeetthisrequirement:−IBMS/370,Motorola68010+,PowerPC,临界指令的问题•POPF:Whenpopfwasruninprivilegedmode,itcouldchangeboththeALUflags(e.g.,ZF)andthesystemsflags(e.g.,IF,whichcontrolsinterruptdelivery),andwhenpopfwasruninunprivilegedmo
5、de,itcouldchangejusttheALUflags-Impossibletodetectwhenguestdisablesinterrupts•SMSW:SMSWinstructionwhichletstheguestoperatingsystemseethetruestateofcontrolbitswithoutallowingthehypervisortotrapit•push%cscanreadcodesegmentselector(%cs)andlearnitsCPL–Guestgetsc
6、onfusedpopf特权解除与陷入模拟•特权解除(ringdeprivileging):我们必须给guestOS做“特权解除”,比如把guestOS的kernel放入权限更低的ring1•陷入模拟:一般的指令直接运行,那些可能改变主机全局行为的“敏感指令”则会被截取,交由VMM通过仿真来完成其功能能够比较完好的实现“trap-and-emulate”的硬件平台是“classicallyvirtualizable”ringdeprivileging问题•ringaliasing:处理器的CPL保存在CS的低两位
7、,所以操作系统通过执行PUSHCS指令和一条POPEAX指令可以很容易发现其目前不在特权级0上执行,这违背了虚拟化对操作系统透明的原则。•nonfaultingaccessingtoprivilegedstate:Intel的特权级机制不能确保所有的访问处理器状态的指令在低特权级状态下执行时都产生故障(Fault),这使得操作系统在访问某些处理器状态时虚拟机监控器无法获得控制,也就无法对这些指令进行仿真。例如,GDTR,LDTR,IDTR,TR包含了控制处理器状态的指针,对这些寄存器的修改只能在特权级0进行,但
8、允许在所有的特权级中读取这些寄存器的值。操作系统可以读取这些寄存器的值,如果与真实的计算机上的值不同,操作系统就可以认为自己正运行在虚拟机环境中。ringdeprivileging问题(cont.)•adverseimpactonguesttransitions:为加快系统调用的速度,Intel引入了SYSENTER和SYSEXIT指令,但SYSENTER指令总是将特权级切换到0,且从