加入收藏 | 设为首页 | 会员中心 | 我要投稿 应用网_丽江站长网 (http://www.0888zz.com/)- 科技、建站、数据工具、云上网络、机器学习!
当前位置: 首页 > 服务器 > 搭建环境 > Linux > 正文

Linux 系统虚拟化模型与障碍

发布时间:2022-01-14 12:55:45 所属栏目:Linux 来源:互联网
导读:Gerald J. Popek和Robert P. Goldberg在1974年发表的论文Formal Requirements for Virtualizable[A1] [A2] Third Generation Architectures中提出了符合虚拟化的3个条件: (1)等价性,即VMM需要在宿主机上为虚拟机模拟出一个本质上与物理机一致的环境。虚拟
   Gerald J. Popek和Robert P. Goldberg在1974年发表的论文“Formal Requirements for Virtualizable[A1] [A2] Third Generation Architectures”中提出了符合虚拟化的3个条件:
 
   (1)等价性,即VMM需要在宿主机上为虚拟机模拟出一个本质上与物理机一致的环境。虚拟机在这个环境上运行与其在物理机上运行别无二致,除了可能因为资源竞争或者VMM的干预导致在虚拟环境中表现上略有差异,比如虚拟机的I/O、网络等因宿主机的限速或者多个虚拟机共享资源,导致速度可能要比独占物理机的慢一些。
    
   (2)高效性,即虚拟机指令执行的性能与其在物理机上运行相比并无明显损耗。该标准要求虚拟机中的绝大部分指令无须VMM干预而直接运行在物理CPU上,比如我们在x86架构上通过Qemu运行的ARM系统并不是虚拟化,而是仿真(Emulator)。
 
   (3)资源控制,即VMM完全控制系统资源。由VMM控制协调宿主机资源给各个虚拟机,而不能由虚拟机控制了宿主机的资源。为了满足GeraldJ. Popek和Robert P. Goldberg提出的满足虚拟化的3个条件,一个典型的解决方案是Trap andEmulate模型。一般来说,处理器可以归结为两种运行模式:系统模式和用户模式。相应的,CPU的指令也分为特权指令和非特权指令。特权指令只能在系统模式运行,如果特权指令运行在用户模式就将触发处理器异常。操作系统将内核运行在系统模式,因为内核需要管理系统资源,需要运行特权指令,而普通的用户程序则运行在用户模式。
 
在虚拟化场景下,虚拟机的用户程序仍然运行在用户模式,但是虚拟机的内核将运行在用户模式,这种方式称为Ring Compression。在这种方式下,虚拟机中的非特权指令直接运行在处理器上,满足了Popek和Goldberg提出的虚拟化标准中高效的要求,即指令的大部分无须VMM干预直接在处理器上运行。但是,当虚拟机执行特权指令时,因为是在用户模式执行特权指令,将触发处理器异常,从而陷入到VMM中,由VMM代理虚拟机完成系统资源的访问,即所谓的模拟(emulate)。如此,又满足了Popek和Goldberg提出的虚拟化标准中VMM控制系统资源的要求,虚拟机将不会因为可以直接运行特权指令而修改宿主机的资源,从而破坏宿主机的环境。

Gerald J. Popek和Robert P. Goldberg指出,修改系统资源的,或者在不同模式下行为有不同表现的,都属于敏感指令。在虚拟化场景下,VMM需要监测到这些敏感指令。一个支持虚拟化的体系架构的敏感指令都属于特权指令,即在非特权级别执行这些敏感指令时,CPU会抛出异常,进入VMM的异常处理函数,从而实现了控制VM访问敏感资源的目的。

(编辑:应用网_丽江站长网)

【声明】本站内容均来自网络,其相关言论仅代表作者个人观点,不代表本站立场。若无意侵犯到您的权利,请及时与联系站长删除相关内容!

    热点阅读