Chinaunix首页 | 论坛 | 博客
  • 博客访问: 1209697
  • 博文数量: 122
  • 博客积分: 0
  • 博客等级: 民兵
  • 技术积分: 4002
  • 用 户 组: 普通用户
  • 注册时间: 2014-02-20 08:27
文章分类
文章存档

2016年(1)

2015年(21)

2014年(100)

分类: LINUX

2014-02-20 10:36:39


=============================================================
 虚拟化相关概念
=============================================================

 

经典的虚拟化采用:陷入后模拟的方法,x86架构中部分敏感指令不能陷入,所以存在虚拟化漏洞。Power架构是不存在虚拟化漏洞的。

-------------------------------------------------------------
1 全虚拟化
-------------------------------------------------------------


-- guest无需任何改动

-- vmm需要处理guest的所有指令

-- x86架构存在虚拟化漏洞:部分敏感指令不是特权指令,执行时,无法“陷入”

    解决方案:
    1、软件辅助:Ring Compression&Binary Translation

         1)先级压缩:VMM运行在Ring 0,Guest kernel运行在Ring 1,Guest User运行在Ring 0,Guest的内核和user执行特权指令时,会引发异常,陷入VMM,VMM截获后进行模拟。

        2)二进制翻译

        VMM扫描Guest OS的二进制代码,将不能虚拟化的指令转化成支持虚拟化的指令,如此:转化后的指令可与VMM合作范围受限的虚拟资源或显式触发异常,由VMM截获处理。

    2、硬件辅助:x86的VT-x, 引入新的运行模式。两种模式都有Ring0-Ring3。
        root模式(vmm)

            VMM的kernel运行于Ring0

            VMM的user运行于Ring3

        Non-root模式(guest)

            guest kernel--ring 0

            guest user--ring 3

            guest运行于non-root模式,有一套完整的处理器 集合和执行环境,只有特权操作会处理器截获并交给VMM


-------------------------------------------------------------
2 半虚拟化
-------------------------------------------------------------


-- guest需要修改,以适应虚拟化平台

-- 比如半虚拟化驱动,可以提升性能


-------------------------------------------------------------
3 敏感指令&特权指令
-------------------------------------------------------------


3.1 特权指令:操作和管理系统关键资源,在非最高特权运行时,会引发异常,陷入最高特权级(比如ring0,硬件保证)

3.2 敏感指令:虚拟化技术中的概念,操作特权资源的指令,包括修改虚拟机运行模式、物理机状态、读写敏感寄存器或内存、IO指令等

3.3 所有特权指令都是敏感指令,但反之不一定,

3.4 如果所有敏感指令都是特权指令,那么该系统是可虚拟化的。反之则是不可虚拟化的,称为存在“虚拟化漏洞”,传统的x86架构的cpu就是存在虚拟化漏洞的。

其它内容待续。

阅读(2957) | 评论(0) | 转发(2) |
给主人留下些什么吧!~~