一、关于虚拟机技术的背景知识
 
1、Emulator和Virtualizer的区别
 
现在很多杀毒软件里面有所谓的智能脱壳功能,其实它就是用一个Emulator模拟器来解释执行机器指令,比如说x86的机器语言是一条一条来被翻译执行的。而Virtualizer并不是由软件来模拟执行,而是使这个代码尽可能自然地在当前的处理器上运行,而虚拟机监控器只需要在某些特定时候进行干预,比如说来处理一些特权指令操作。
Emulator中比较有名的一个是BOCHS,可能有一些朋友用它来进行过一些操作系统级的调试。这是一个开源的软件,在网上可以下载到。
Virtualizer比较有代表性的是VMware、VPC这些软件。
VMM是虚拟机管理器,也叫做虚拟机监控器,其实它就是一个软件层。这个软件层是在被虚拟执行的操作系统和真实的硬件环境间由软件构架的一套中间层,由它来负责对下面的硬件,比如CPU处理器、硬件等进行虚拟。我们后面还会看到对VMM的结构和工作原理的介绍。
2、Host OS和Guest OS
 
Host OS和Guest OS非常好理解,在虚拟机里运行的系统,我们称之为客操作系统。对于二型VMM架构它的主操作系统,我们叫做Host OS。
3、VMM的类型
 
下面我们介绍一下VMM的类型,有两种:一种是在裸机上的架构,第二种是混合型,就是有主操作系统的VMM,典型代表有:
  1. Type I VMM(Bare Metal):VMware ESX, Xen, MS Hyper-V
  2. Type II VMM(Hosted/Hybrid):VMware Workstation, MS VPC
图1描述的是I型VMM的结构。我们可以看到虚拟机监控器VMM是装在裸机上的,在这个上面我们会有多个并发运行的客操作系统Guest OS。
图1  I型VMM结构图
对于有Host OS的II型VMM是图2这样的,虚拟机软件本身是Host OS的一部分,通过虚拟机软件,使VMM和Guest OS运行在同一个线性地址空间里来虚拟Guest OS的执行。另外VMM还有一个功能,从主操作系统的上下文空间向客操作系统的上下文空间进行切换,由它进行控制。
图2  II型VMM结构图
我们原先用到虚拟机的技术,多半都是由纯软件来实现的,因为我们在硬件上没有对虚拟的直接的支持。用软件来实现虚拟,是非常困难,而且非常非常有技巧的一件事情。可能用过VMware的朋友都有一个疑问,它到底是怎么实现的?怎么来同时运行两个操作系统?VMware在里面的操作系统运行在一个Windows窗口里面,外部的操作系统也在并发执行,怎么做到的?其实这用到了很多比较复杂的技术,包括所谓的执行特权级压缩。也就是说,在窗口里运行的客操作系统的内核模式,实际上不是在ring0执行的,而是被降级到ring1执行的。这样就能保证它里面发出的一些特权指令的调用可以被虚拟机监控器所捕获到,来进行模拟。而它里面用户态的代码是自然在CPU上执行的,这就是为什么执行的效率相比起其他的一些模拟器来说我们会觉得比较快,因为它大部分的指令全是在CPU上自然执行,不需要虚拟机监控器来进行干预。
但是由于x86这个体系本身对于虚拟来说有一些不支持的地方,比如一些敏感的但是不可捕获的指令,比如说像SIDT这条指令,即便在ring3下执行也不能产生异常,VMM抓不到它,这对虚拟来说是一个挑战。所以VMM对于Guest OS的ring0采取的是二进制翻译,而对ring3采取的是直接执行。下面这条是为了对付这种敏感但是不可虚拟的指令,而采用的二进制翻译的机制。
 
4、用软件来实现MMU
 
还有一个比较关键的技术,就是所谓的用软件来实现MMU(内存管理单元),影子页表。在图2所示的II型VMM里面,客操作系统认为自己是独占线性地址空间,而且觉得这个物理内存全部是它的。但是我们可以看到,VMM是跟它运行在同一个线性空间里,而且只是划分了一部分物理内存给它使用,所以必须使用软件虚拟MMU的方法来使它认为自己好像是独占这个空间的。
Guest OS有自己的页表,但是这个页表不能被硬件直接使用,而硬件的页表是由VMM控制的。Guest OS自己的页表和实际的硬件设置之间有一个对应关系,这种对应关系是由VMM来维护的。
由于软件虚拟技术比较复杂,而且效率比较低,所以近几年处理器直接加入了对虚拟的支持,即所谓的硬件虚拟。我们可以看到,Intel和AMD都有所动作,Intel的叫做VT-x,AMD的叫做SVM技术。当然后面还有一些别的后续技术,比如说VT-d和IOMMU。
查看全文>>
本文主要内容整理自McAfee研究员孙冰先生在2008中国软件安全峰会上的演讲,欢迎下载本文资料
浏览更多精彩文章>> 
欢迎订阅软件安全电子期刊>>
 

转载于:https://blog.51cto.com/broadviewsec/125260

走近虚拟机——McAfee研究员孙冰谈虚拟机技术和虚拟机安全相关推荐

  1. kvm虚拟化技术下虚拟机磁盘的数据保护

    摘要:kvm虚拟化技术下虚拟机的磁盘空间中数据的保护与恢复,考虑kvm的服务器级别的可用性. 1.kvm技术简单介绍    kvm虚拟化技术由几部分构成,kvm内核模块(cpu和内存的虚拟化及管理), ...

  2. Linux虚拟机 百度云 监控,使用Shell脚本监控KVM虚拟机

    最近有朋友问我平时使用KVM虚拟机的时候用什么软件进行管理.其实我平时都是使用virsh命令通过命令行进行虚拟机的管理的.虽然RedHat有虚拟机管理和监控平台,但是只能在redhat发行版上使用,其 ...

  3. QEMU KVM 虚拟机移植之性能提高篇小结(android 虚拟机双系统方案)

    一.提升性能核心要素 1.将OPENGL 接口进行穿透调用,下面对opengl穿透做个小结 2.在arm开发板上打开kvm特性,这个qcom&mtk都是实现了的,只需要打开开关即可 二.AND ...

  4. linux虚拟机怎么看var文件,一种获取Linux虚拟机内部日志的方法

    一种获取Linux虚拟机内部日志的方法 [技术领域] [0001]本发明涉及云计算管理技术领域,特别是指一种获取Linux虚拟机内部日志的方法. [背景技术] [0002]在云计算环境下,虚拟机被广泛 ...

  5. 【VMware虚拟机】使用SSH连接VMware上的Linux虚拟机(主机互通也可访问外网)

    最近开始研究docker平台的搭建,故在本机上安装了VMware workstation pro,并创建了Linux虚拟机(centos7系统),为了方便本机和虚拟机间的切换,准备使用SSH直接连接L ...

  6. windows虚拟机_Windows电脑体验macOS,装黑苹果?虚拟机也可以的——VMWare篇

    在上篇文章:体验Linux.MacOS首选在虚拟机:简单中小编介绍什么是Hypervisor,以及常见的两款虚拟机软件,VMWare Workstation 以及 Virtual Box.本文就是实战 ...

  7. 如何用计算机表达无理数,科学网—刘瑞祥:计算机表示无理数的一些设想 - 孙冰的博文...

    原则上来说,计算机不能准确地表达无理数,这道理不用我说了吧,但是,通过适当的变通,计算机能不能表达一部分无理数呢?比如我们在中学里常见的无理数. 我认为是可能的,设想如下: 第一步,我们先要找到准确表 ...

  8. 怎么关闭win10虚拟机服务器,如何关闭Win10自带虚拟机?三种关闭Win10专业版系统hyper-v虚拟机的方法...

    在win10专业版系统中,通常是自带有虚拟机Hyper-V,可以帮助大家实现其他系统的操作,但是很多用户并不知道要怎么开启虚拟机Hyper-V,hyper-v可以提高虚拟实现的可用性,但是如果我们使用 ...

  9. 苹果系统虚拟计算机win7,Mac虚拟机安装Win7 64位系统教程_苹果虚拟机安装Win7真的很简单...

    使用苹果笔记本的朋友一开始都是MAC原装系统,当然对于要玩游戏和工作的朋友来说Mac肯定不行,不管是工作需要还是测试在苹果电脑上安装Win7系统都是必要的,除了安装双系统之外,Mac虚拟机安装Win7 ...

最新文章

  1. 设置echarts的grid、tooltip、柱状图渐变色、折线图渐变色
  2. 包含min函数的栈 大坑
  3. ERROR: Command errored out with exit status 1:
  4. vue = 什么意思_记录使用@vue/cli搭建Vue3项目完整流程
  5. python 里什么时候缩进_python什么时候缩进
  6. 2018 java蓝桥杯校赛题目
  7. linux的usermod命令参数,linux usermod命令参数及用法详解
  8. 前后端分离的思考与实践(六)
  9. 数字信号处理matlab心得,数字信号处理学习心得体会.doc
  10. Speedoffice(word)怎么撤回上一步的操作
  11. 北京航空航天大学计算机学院保研率,北京航空航天大学计算机学院(专业学位)计算机技术保研条件...
  12. ROS导航【01】: move_base包(导航和路径规划)
  13. 蓝桥杯刷题冲刺 | 倒计时14天
  14. lotus interop.5.5
  15. android sdl,能通吃所有安卓手机的SDL究竟是何神通?
  16. 一个普通高校学生入门C/C++入门的第一篇博客1.0.1
  17. HTML标签结构1.2(媒体标签:图片标签、音频标签、视频标签)
  18. The best of youth --灿烂人生,眼前所见皆美好!
  19. GPL AND LGPL
  20. 第十一篇:读《文明,现代化,价值投资与中国》

热门文章

  1. Cpp6 封装、继承和多态
  2. pywebQQ-----linux下webQQ的替换者
  3. “2016智能终端峰会新闻发布会暨移动信息化可信选型认证结果发布会” —— 在京成功召开...
  4. 上struts2的xml在lt;result type=quot;redirectquot;gt;参数问题
  5. AIX本地磁盘io优化
  6. html可以导入MySQL吗_将数据从HTML文件(带有嵌入式JavaScript)导入MySQL数据库
  7. 由浅入深:自己动手开发模板引擎——解释型模板引擎
  8. HTML中Select的使用详解
  9. Android 中Message,MessageQueue,Looper,Handler详解+实例
  10. asp.net 关于列表问题。点击文章标题,显示文章内容。