CPU虚拟化技术介绍

虚拟化的三个条件:等价性,高效性和资源控制。这三条是针对VMM(Virtual Machine Manager)说的。

陷入和模拟模型 处理器分为两种运行模式:系统模式和用户模式。CPU指令对应分为特权指令和非特权指令。

陷入和模拟模型下,虚拟机用户程序仍然运行在用户模式下,虚拟机的内核也运行在用户模式,成为特权级压缩(Ring Compression)。这种模式下,虚拟机的非特权指令直接运行在处理器上。执行特权指令时会触发处理器异常,从而陷入VMM中,由VMM代理虚拟机完成系统资源的访问----模拟。

X86架构虚拟化的障碍 x86架构并不是所有的敏感指令都是特权指令。---- 解决办法是静态翻译和动态翻译。翻译是指对敏感指令进行翻译,静态是对可执行文件的指令进行翻译,动态翻译是以代码块为单元动态修改二进制代码。

VMX 为了从硬件层面解决x86架构的虚拟化问题,intel开发了VT技术支持虚拟化,为CPU增加了Virtual-Machine Extensions, 简称VMX。

启动VMX支持后, CPU提供两种运行模式:VM Root Mode和 VMX non-Root Mode, 每种模式都支持ring0 ~ ring3 . VMM运行在 Root Mode, VM运行在non-Root Mode。Guest无需再采用特权压缩方式,Guest kernel直接运行在VMX non-Root Mode的ring0种。

这个模式的好处:

Guest用户空间的系统调用直接陷入Guest模式的内核空间,不再陷入Host模式的内核空间。 对于外部中断,会触发CPU从Guest模式退出到Host模式,Host内核处理外部中断后再重新切入Guest模式。 不再是所有的特权指令都会导致处于Guest模式的CPU会发生VM exit,只有敏感指令才会。因为不是所有的特权指令都需要VMM来处理。

点赞
收藏

评论区

加载中...

相关推荐

常用内核架构

本文分享自天翼云开发者社区《》,作者:JackW宏内核应用程序调用内存分配的API(应用程序接口)函数。处理器切换到特权模式,开始运行内核代码。内核里的内存管理代码按照特定的算法,分配一块内存。把分配的内存块的首地址,返回给内存分配的API函数。内存分配的

Redis3.0.6集群搭建

创建一个RedisCluster之前,我们需要有一些以cluster模式运行的Redis实例,这是因为cluster模式下Redis实例将会开启cluster的特征和命令。现在我有2台Vbox搭建的CentOS6虚拟机【CentOS1(192.168.56.101)和CentOS2(192.168.56.102)】,准备在此上搭建Redis集群。由于

Centos 7 忘记管理员root密码的解决办法

文章目录方法一:通过救援模式重置root密码方法二:使用单用户模式重置root密码当虚拟机多的时候经常可能会忘记root密码,这时候我们就会去虫子root密码这里介绍两种重置Centos7系统root密码的方法方法一:通过救援模式重置root密码1、在系统开机

PHP入门教程之手把手编写自己的PHP MVC框架

1什么是MVCMVC模式(ModelViewController)是软件工程中的一种软件架构模式。MVC把软件系统分为三个基本部分:模型(Model)、视图(View)和控制器(Controller)。PHP中MVC模式也称WebMVC,从上世纪70年代进化而来。MVC的目的是实现一种动态的程序设计,便于后续对程序的修改和扩展简化,并

20179311《网络攻防实践》第七周作业

1.Windows操作系统的基本结构分为运行于处理器特权模式的操作系统内核,以及运行在处理器非特权模式的用户空间代码。采用宏内核模式来进行构架,这使得任意的内核模块或设备驱动程序都可能破坏其他内核模块数据,这种宏内核机制也使得Windows操作系统容易遭受以驱动方式植入内核的Rootkit的危害,为了避免这类攻击,最

Linux chmod命令详解

chmod改变一个或多个文件的存取模式(mode)chmod\options\modefiles只能文件属主或特权用户才能使用该功能来改变文件存取模式。mode可以是数字形式或以whoopcodepermission形式表示。who是可选的,默认是a(所有用户)。只能选择一个opcode(操作码)。可指定