开发者学堂课程【虚拟化技术入门:CPU虚拟化技术】学习笔记,与课程紧密联系,让用户快速学习知识。
课程地址:https://developer.aliyun.com/learning/course/374/detail/4696
CPU虚拟化技术
目录:
一、Binary Translation
二、Para-Virtualization
三、硬件辅助虚拟化
四、对比
内容介绍:
cpu 虚拟化技术。要介绍一个背景知识,知道在当今世界里边,X86 架构是非常非常主流的,从手机到 PC 再到服务器都在使用 X86 架构,X86 架构,但是 X86 架构有个天生的缺点,就是设计的时间比较早,比如在上世纪70年代,当时只是为 PC 设计,没有考虑虚拟化的需求,也就是说很多的指令,都不支持虚拟化,这就会造成在虚拟化的情况下,客户机的操作系统,很多指令没办法运行的。
一、Binary Translation
实现复杂 性能损失
最开始由 VMware 和微软使用
由于 X86 架构不支持虚拟化,为了能够更好的支持虚拟化,需要用该技术把这些操作不支持虚拟化技术的指令找出来,然后将动态的补丁替换掉。
其特点是需要扫描。所有操作系统的指令,然后进行替换,也会引起很多的问题,如性能损失等。
二、Para-Virtualization
通过静态的修改,使得之前不支持 CPU 的指令不想需进行动态化的扫描替换。而不需要再进行动态的扫描过程。
该技术大大提高了 CPU 虚拟化的效率,能够实现98%的虚拟化。
是准虚拟化或者半虚拟化,这个技术是由剑桥大学计算机实验室发明的。
通过静态的去修改该死的操作系统的源码,使这些不支持 cpu 虚拟化的指令,然后能够提前替换掉。而不需要再做动态扫描跟扫描替换,在一定程度上大大提高了cpu 虚拟化的效率。
这个技术一出现之后,当时,比如 cpu 虚拟化的效率是可以做到98%,是要远远高于向 banner translation 这样这种50%-60%的 cpu。
三、硬件辅助虚拟化
从芯片设计的角度就可以支持虚拟化技术
在2004年因特尔公司和 AMD 公司先后发布了新的 cpu 规范,在新的 cpu 规范里加入了硬件辅助的虚拟化技术,也就是说可以从芯片设计的角度就能够支持虚拟化技术。
设计之初,其实没有考虑对虚拟化技术的支持,那么是否可以通过修改 X86 架构来实现虚拟化技术?答案当然是肯定的。
在2004年的时候,AMD、英特尔公司和AMD公司。然后先后发布了新的 cpu 规范,在新的cpu规范里边就加入了硬件辅助的虚拟化技术,也就是说。从芯片设计的角度就可以去支持虚拟化技术,这就是后来的 VTX 技术和 SDM 技术。
四、对比
Final translation 技术,它是通过软件的方式去扫描,Cpu 里边不支持虚拟化技术的指令,然后动态的替换掉,它的效率相对来说是比较低的,但是它是可以运行未经修改的操作系统。
Para Liz Asian 是通过修改该死的操作系统的源码的形式,然后静态编译之后可以。提供更加高效的这种 cpu 虚拟化的方式,但是它有个致命的缺点,就是要必须有操作系统的源码,那对于 Windows 这种必然的操作系统来说,其实是没办法做到的。
ervX 技术是真正的从今天的角度去解决 cpu。对于虚拟化技术的支持,既可以提高虚拟化的效率,又同时可以支持。
未经修改的这种操作系统,也就是不需要修改操作系统,所以说 VTX 技术,实现了这种 cpu 虚拟化是一个比较完美的解决方案。