[虚拟化] CPU虚拟化技术 - Introduction

  虚拟化技术的分类主要有服务器虚拟化、存储虚拟化、网络虚拟化、应用虚拟化

  服务器虚拟化技术按照虚拟对象来分,可分为:CPU虚拟化、内存虚拟化、I/O虚拟化

          按照虚拟化程度可分为:全虚拟化、半虚拟化、硬件辅助虚拟化

  将不同的虚拟化对象和程度组合,可得出 9种 不同的服务器虚拟化技术

  首先详细介绍下服务器虚拟化之CPU虚拟化,后续讲解中再详细介绍内存虚拟化及I/O虚拟化。

  二、CPU虚拟化

  ·CPU全虚拟化技术

  主要采用优先级压缩技术(Ring Compression)和 二进制代码翻译技术(Binary Translation)。优先级压缩技术让VMM和Guest 运行在不同的特权级下。

  对X86架构而言,即VMM运行在最高特权级别Ring 0下,Guest OS 运行在Ring 1 下,用户应用运行在Ring 3下。因此 Guest OS 的核心指令无法直接下达

  到计算机系统硬件执行,而是需要经过 VMM 的捕获和模拟执行(部分难以虚拟化的指令需要通过 Binary Translation技术进行转换)。

  ·CPU半虚拟化技术

  主要采用Hypercall 技术。Guest OS 的部分代码被改变,从而使Guest OS会将和特权指令相关的操作都转换为发给VMM的Hypercall(超级调用),由VMM继续进行处理。而Hypercall支持的批处理和异步这两种优化方式,使得通过Hypercall 能得到近似于物理机的速度。

  ·CPU硬件辅助虚拟化技术

  目前主要有Intel 的VT-x和AMD的AMD-V这两种技术。其核心思想都是通过引入新的指令和运行模式,使VMM和Guest OS分别运行在不同模式(ROOT 模式和非ROOT模式)下,且Guest OS 运行在Ring 0 下。通常情况下,Guest OS 的核心指令可以直接下达到计算机系统硬件执行,而不需要经过VMM。当Guest OS执行到特殊指令的时候,系统会切换到VMM,让VMM来处理特殊指令。

  CPU的虚拟化技术可以单CPU模拟多CPU并行,允许一个平台同时运行多个操作系统,并且应用程序都可以在相互独立的空间内运行而互不影响,

  从而显著提高计算机的工作效率。

  GuestOS负责第2级调度,即线程或进程在VCPU上的调度(将核心线程映射到相应的虚拟CPU上。)

  VMM(Virtual Machine Monitor)负责第1级调度,即VCPU在物理处理单元上的调度。

  两级调度的调度策略和机制不存在依赖关系。VMM负责物理处理器资源在各个虚拟机之间的分配和调度,本质上即把各个虚拟机中的VCPU按照一定的策略和机制调度在物理处理单元上,可以采用任意的策略来分配物理资源,满足虚拟机的不同需求。

  Refer to: https://www.cnblogs.com/aaronax/p/5692391.html

原文地址:https://www.cnblogs.com/bouygues/p/9939690.html

时间: 2024-08-26 03:02:06

[虚拟化] CPU虚拟化技术 - Introduction的相关文章

CPU虚拟化技术(留坑)

留坑~~~ 不知道这个是这么实现的 CPU虚拟化技术就是单CPU模拟多CPU并行,允许一个平台同时运行多个操作系统,并且应用程序都可以在相互独立的空间内运行而互不影响,从而显著提高计算机的工作效率.虚拟化技术与多任务以及超线程技术是完全不同的.多任务是指在一个操作系统中多个程序同时并行运行,而在虚拟化技术中,则可以同时运行多个操作系统,而且每一个操作系统中都有多个程序运行,每一个操作系统都运行在一个虚拟的CPU或者是虚拟主机上:而超线程技术只是单CPU模拟双CPU来平衡程序运行性能,这两个模拟出

KVM虚拟化CPU技术总结

KVM虚拟化CPU技术总结 一 NUMA技术介绍NUMA是一种解决多CPU共同工作的技术方案,我们先回顾下多CPU共同工作的技术架构历史.多CPU共同工作主要有三种架构,分别是SMP MPP NUMA架构.SMP MPP NUMA 都是为了解决多CPU共同工作的问题.早期的时候,每台服务器都是单CPU,随着技术发展,出现了多CPU共同工作的需求,最早的多CPU技术是SMP.SMP 多个CPU通过一个总线访问存储器,因此SMP系统有时也被称为一致存储器访问(UMA)结构体系,一致性意指无论在什么时

CPU虚拟化

1. 为什么需要 CPU 虚拟化 X86 操作系统是设计在直接运行在裸硬件设备上的,因此它们自动认为它们完全占有计算机硬件.x86 架构提供四个特权级别给操作系统和应用程序来访问硬件.  Ring 是指 CPU 的运行级别,Ring 0是最高级别,Ring1次之,Ring2更次之-- 就 Linux+x86 来说, 操作系统(内核)需要直接访问硬件和内存,因此它的代码需要运行在最高运行级别  Ring0上,这样它可以使用特权指令,控制中断.修改页表.访问设备等等. 应用程序的代码运行在最低运行级

虚拟化的理论-CPU虚拟化

二进制翻译(Binary Translation)是一种直接翻译可执行二进制程序的技术,能够把一种处理器上的二进制程序翻译到另外一种处理器上执行.它使得不同处理器之间的二进制程序可以很容易地相互移植,扩大了硬件/软件的适用范围,有助于打破前面提到的处理器和支持软件之间互相掣肘影响创新的局面. ---来自百度百科 基于二进制翻译技术的完全虚拟化,主要是解决一些敏感指令的翻译.翻译过程如下: Guest OS运行在Ring1级别,VMM运行在Ring 0级别完全掌控系统资源对资源进行控制,对于一些非

烂泥:查看服务器的BIOS是否开启CPU虚拟化

本文由秀依林枫提供友情赞助,首发于烂泥行天下. 有关CPU是否支持虚拟化,我们可以通过相关的命令和软件进行查看. 在windows系统下,我们可以使用CPU-Z这个软件,如下图: 在linux系统下,我们可以通过查看/proc/cpuinfo文件,如下图: 今天我们在此谈论是在CPU支持虚拟化的前提下,主板的BIOS是否开启CPU的虚拟化. 在windows系统下,我们需要安装微软的一个工具havdetectiontool.exe来实现.该工具下载地址:http://www.microsoft.

CPU封装技术介绍

所谓“CPU封装技术”是一种将集成电路用绝缘的塑料或陶瓷材料打包的技术.以CPU为例,我们实际看到的体积和外观并不是真正的CPU内核的大小和面貌,而是CPU内核等元件经过封装后的产品. CPU封装对于芯片来说是必须的,也是至关重要的.因为芯片必须与外界隔离,以防止空气中的杂质对芯片电路的腐蚀而造成电气性能下降.另一方面,封装后的芯片也更便于安装和运输.由于封装技术的好坏还直接影响到芯片自身性能的发挥和与之连接的PCB(印制电路板)的设计和制造,因此它是至关重要的.封装也可以说是指安装半导体集成电

CPU host-passthrough技术与应用

为了保证虚拟机在不同宿主机之间迁移的时候的兼容性,Libvirt对CPU提炼出标准的几种类型,在/usr/share/libvirt/cpu_map.xml中可以查到.cpu_map.xml不仅是CPU型号,还有生产商信息.每种型号的CPU特性定义等信息,如下所示: <cpus> <arch name='x86'> <!-- vendor definitions --> <vendor name='Intel' string='GenuineIntel'/>

从CPU的技术参数认识CPU

CPU是PC的核心所在,在以下的文章里面我们从几个与CPU相关的性能参数谈起,使读者初步对CPU有个全面的了解,这样将有助于加深读者对PC的了解. 1.CPU的内部结构与工作原理 CPU是Central Processing Unit--中央处理器的缩写,它由运算器和控制器组成,CPU的内部结构可分为控制单元,逻辑单元和存储单元三大部分.CPU的工作原理就象一个工厂对产品的加工过程:进入工厂的原料(指令),经过物资分配部门(控制单元)的调度分配,被送往生产线(逻辑运算单元),生产出成品(处理后的

JVM CPU Profiler技术原理及源码深度解析

研发人员在遇到线上报警或需要优化系统性能时,常常需要分析程序运行行为和性能瓶颈.Profiling技术是一种在应用运行时收集程序相关信息的动态分析手段,常用的JVM Profiler可以从多个方面对程序进行动态分析,如CPU.Memory.Thread.Classes.GC等,其中CPU Profiling的应用最为广泛.CPU Profiling经常被用于分析代码的执行热点,如“哪个方法占用CPU的执行时间最长”.“每个方法占用CPU的比例是多少”等等,通过CPU Profiling得到上述相