虚拟化的实现

作者: 廖马儿 | 来源:发表于2017-05-22 09:00 被阅读70次

    主要实现在x86的机器上面,其他的一些机器的设计没有考虑到后面要做虚拟化技术。

    x86x64区别:
    http://jingyan.baidu.com/article/fa4125acb30e8228ac709232.html

    “ x86 x64 有啥区别”这个问题和“32位和64位有啥区别”是一样的;因为x64其实就是64位,x86其实就是32位;

    32位和64位,都是用来形容操作系统的,所以我们在下载操作系统的时候,会存在32位系统和64位系统的选择,如图的windows系统所示。

    而不同位数的操作系统,对CPU的运算方式产生的影响或者要求亦不同,所以从更深层次的角度来说,32位和64位是指CPU运算方式的差异。

    很多人之所以关注32位和64位的差异,是因为32位系统最多只能发挥4G内存的效用,如果电脑安装了大于4G的内存,32位的操作系统是不能更好的利用大于4G的那部分内存的效用的,所以会造成资源浪费。

    而64位的操作系统,按照微软对系统的设定,家庭版本的win7可以最多支持16G的内存,而专业版和旗舰版的win7最多支持的内存容量可达192G内存。

    所以如果你电脑拥有超过4G的内存,则建议安装64位的操作系统,这是这两者最大的区别。

    要判断你的电脑是否支持64位系统,可以利用“SecurAble”这款软件来查看。


    CPU虚拟化

    目标是GuestOS里的指令能够正常执行,然后还要保证性能和效率尽可能的接近物理机

    方式:全虚拟化,半虚拟化,硬件辅助虚拟化。

    说明: 电脑系统是XP,安装了虚拟机为Linux,那么XP是Host,Linux是Guest。
    客机操作系统(Guest OS)是指一个安装在虚拟机上的操作系统。

    保证性能和效率:效率性
    指令能够正常执行:资源控制
    尽可能的接近物理机:等价性
    

    CPU全虚拟化

    x86要实现虚拟化,需要解决一个重要的问题,就是CPU指令越级。
    解决方法,首先想到的是,CPU全虚拟化的方式。
    定义:全虚拟化是指虚拟机模拟了完整的底层硬件,使得为原始硬件设计的操作系统或者其他系统软件完全不做任何修改就可以在虚拟机中运行。

    实现:特权级压缩和二进制翻译(BT)技术去实现。

    图片.png

    特权级敏感指令:系统内核是运行在其中的。权限最高。

    图片.png

    特权级压缩就是指的是:将系统降一级,放到Ring1中去。

    CPU全虚拟化 = 特权压缩 + 二进制翻译


    CPU半虚拟化
    定义:对虚拟机的操作系统进行内核改造,虚拟机有自己特殊的指令,然后和VMM一起配合工作。(这样就不会有捕获,翻译,模拟的过程)
    代表:Xen
    优点:性能很高,能够更加接近物理机的速度,通常损耗2%,最多8%(理论值)
    缺点:无法虚拟Windows系统(因为是对操作系统进行内核改造)Windows系统是闭源的,就不能进行操作系统内核改造。


    CPU硬件辅助虚拟化
    定义:对CPU指令做了改造,让CPU从根本上能够支持虚拟化。
    Intel:VT-x AMD:AMD-V
    cat/proc/cpuinfo|grep vmx(intel cpu执行这个) 可以查看cpu是否支持虚拟化
    cat/proc/cpuinfo|grep svm(amd cpu执行这个) 可以查看cpu是否支持虚拟化
    x86推出的时候,就没有考虑做虚拟化,当时硬件底层不支持虚拟化,到了2015年,intel从根本上支持虚拟化。

    图片.png

    相关文章

      网友评论

        本文标题:虚拟化的实现

        本文链接:https://www.haomeiwen.com/subject/tatxxxtx.html