每一个操作系统都运行在一个虚拟机运行慢的CPU

& & 计算机中,Virtualization是一种资源管理技术,是将计算机的各种实体资源,如服务器、网络、内存及存储等,予以抽象、转换后呈现出来,打破实体结构间的不可切割的障碍,使用户可以比原本的组态更好的方式来应用这些资源。这些资源的新虚拟部分是不受现有资源的架设方式,地域或物理组态所限制。一般所指的虚拟化资源包括计算能力和资料存储。& & 实际生产环境中,虚拟化技术主要用来解决高性能的物理硬件产能过剩的老的旧的硬件产能过低的重组重用,透明化底层物理硬件,从而最大化的利用物理硬件。& & 虚拟化技术中,可以同时运行多个操作系统,而且每一个操作系统中都有多个程序运行,每一个操作系统都运行在一个虚拟的CPU或者是虚拟主机上。& & 虚拟化技术也与VMware Workstation等同样能达到虚拟效果的软件不同,是一个巨大的技术进步,具体表现在减少软件虚拟机相关开销和支持更广泛的操作系统方面。
按虚拟的对象分类:1.硬件虚拟化,使用硬件模拟, 你能够在基于ARM处理器的主机上模拟运行基于PowerPC未经任何修改的操作系统. 你甚至能在每个不同模拟处理器上运行多个虚拟机.    2.虚拟机(Virtual machine或VM),可以像真实机器一样运行程序的计算机的软件实现& & ①平台虚拟化,将操作系统和硬件平台资源分区开& &   a.完全虚拟化,敏感指令在操作系统和硬件之间被捕捉处理,客户操作系统无需修改,所有软件都能在虚拟机中运行,例如IBM CP/CMS,VirtualBox,VMware Workstation& &   b.硬件辅助虚拟化,利用硬件(主要是CPU)辅助处理敏感指令以实现完全虚拟化的功能,客户操作系统无需修改,例如VMware Workstation,Xen,KVM& &   c.部分虚拟化,针对部分应用程序进行虚拟,而不是整个操作系统& &   d.准虚拟化/超虚拟化(paravirtualization),为应用程序提供与底层硬件相似但不相同的软件接口,客户操作系统需要进行修改。例如Xen的半虚拟化模式。    e.操作系统级虚拟化,使操作系统内核支持多用户空间实体,例如Parallels Virtuozzo Containers、OpenVZ、LXC以及类Unix系统上的chroot,Solaris上的Zone   ②应用程序虚拟化,在操作系统和应用程序间创建虚拟环境
   & &a.便携式应用程序,允许程序在便携式设备中运行而不用在操作系统中安装
   & &b.跨平台虚拟化,允许针对特定CPU或者操作系统的软件不做修改就能运行在其他平台上,例如Wine
   & &c.虚拟设备,运行于虚拟化平台之上,面向应用的虚拟机映像
   & &d.模拟器3.虚拟内存,将不相邻的内存区,甚至硬盘空间虚拟成统一连续的内存地址4.存储虚拟化,将实体存储空间(如硬盘)分隔成不同的逻辑存储空间5.网络虚拟化,将不同网络的硬件和软件资源结合成一个虚拟的整体(请给出来源?)
  ①虚拟专用网络(VPN),在大型网络(通常是Internet)中的不同计算机(节点)通过加密连接而组成的虚拟网络,具有类似局域网的功能
  ②存储器虚拟化,将网络系统中的随机存储器聚合起来,形成统一的虚拟内存池6.桌面虚拟化,在本地计算机显示和操作远程计算机桌面,在远程计算机执行程序和储存信息7.数据库虚拟化8.软件虚拟化9.服务虚拟化
按照抽象程度的不同,常常把虚拟技术分为五个层次:① 指令集结构层(Instruction Set Architecture Level)指令集结构层的虚拟技术是通过软件方法模拟指令的执行效果。② 硬件抽象层(Hardware Abstraction Level)硬件抽象层的虚拟技术是有硬件支持的虚拟技术,如2005年和2006年Intel公司和AMD公司推出的大部分新款x86架构处理器都带有虚拟技术支持。两家公司都称新的带有虚拟技术支持的处理器可以大大提高虚拟机的运行效率和性能。
③ 操作系统层(OS Level)④ 应用层(Application Level)应用层的虚拟技术是最常见的,如Java虚拟机、微软.net CLI和Parrot。⑤ 库层(Library Level)
虚拟化技术的应用:服务器集成沙盒(Sandboxing)多运行环境多操作系统测试和性能监视应用集成虚拟硬件软件移植系统可管理性测试/质量保证
阅读(...) 评论()虚拟机 - CSDN博客
假设这里的虚拟化是指在一个OS下虚拟化另外一个OS(ESX那种hypervisor直接跑在硬件上的做法,其实大同小异),另外假设这里的虚拟化是指full virtualization而不是Xen那种para-virtualization。最后假设虚拟化的是一个早期的x86机子(没有hardware
supported virtualization的存在)。
要回答这个问题,首先看为什么一个OS无法直接与另外的OS共存。答案很简单,OS作为硬件上第一层软件,认为自己拥有全部的硬件的访问和控制权,且自己是唯一的控制者。在这种情况下,如果两个OS共存,必然产生问题。
OS主要负责管理的是CPU和内存,以及众多的IO设备。于是我们可以分别讨论。hypervisor是实现虚拟化的关键,它会以一个内核态的驱动存在。
CPU的虚拟化:
背景知识:x86 CPU有一项权限机制,把CPU的状态置于RING 0到RING 3分别使CPU具有最高的权限到最低的权限。以Linux为例,内核运行于RING 0上,而其余全部用户进程运行于RING 3上(Xen比较奇葩,Linux在Xen下面会运行于RING
1)。在用户权限下,所有的IO设备是不可操作的,另外,有些控制寄存寄是无法访问的,一些privilege的指令是不能运行的。因此一个用户进程要想读写文件,进行一些操作,就要依赖于内核。系统调用能够使CPU运行于RING 0,并执行内核代码(具体方法见一些操作系统教程)。
背景说完。一个CPU的全部状态其实就是所有寄存器的值,只要保证任何操作之后寄存寄的值在OS看来是正确的,guest OS就可以正常执行。hypervisor会为每个虚拟的CPU创建一个数据结构,模拟CPU的全部寄存器的值,在适当的时候跟踪并修改这些值。
那么考虑虚拟化一个CPU,在虚拟化的guest OS里面,CPU无论如何也不可能运行于RING 0,因为这样的话,host OS必然会crash掉。因此,当一个guest OS想要进入到RING 0执行内核代码时,hypervisor会向guest OS说谎,并告诉它,你已经在RING
0上了,而实际上,所有的指令还是在RING 3上。当guest OS访问到任何privilege的东西时,hypervisor会接到fault,此时hypervisor会判断这个指令是什么,并修改相应的虚拟寄存器的状态,然后返回。这样guest OS就可以正常的运行。需要指出的是,在大多数的指令下代码是直接跑在硬件上的,而不需要软件介入。只有在一些权限高的请求下,软件会介入,并维护虚拟的CPU状态。
内存的虚拟化:
背景知识:虚拟内存,页表结构等。OS的基础内容,不表。
hypervisor虚拟化内存的方法是创建一个shadow page table。正常的情况下,一个page table可以用来实现从虚拟内存到物理内存的翻译。在虚拟化的情况下,由于所谓的物理内存仍然是虚拟的,因此shadow page table就要做到:虚拟内存-&虚拟的物理内存-&真正的物理内存。
以下是细节,如果看着闹心,请忽略。hypervisor会维护一个从虚拟内存到物理内存的映射,当guest OS更换自己的page table,也就是改变CR3寄存器的值,hypervisor会因为用户态的权限不足而接到一个general exception,hypervisor会记录用户想要更换的新的页表,并放上一个空的shadow
page table,然后返回。这个空的shadow page table会在接下来的执行中造成CPU无法进行地址翻译,而产生page fault。在fault发生后,hypervisor会得到一个虚拟地址,然后根据之前记录的用户的页表结构,翻译出一个虚拟机器地址,然后再把这个虚拟的机器地址,由hypervisor维护的映射翻译为实际的机器地址,然后装入shadow page table,并返回执行。如此,就实现了:虚拟内存-&虚拟的物理内存-&真正的物理内存。
I/O虚拟化:
背景知识:memory mapped I/O device。大多数的PCI设备都是直接将自己的某些控制寄存器映射到物理内存空间上,CPU访问这些控制寄存器的方法和访问内存相同。CPU通过修改和读取这些寄存器来操作I/O设备。
虚拟化的方法很简单,没当hypervisor接到page fault,并发现实际上虚拟的物理内存地址对应的是一个I/O设备,hypervisor就用软件模拟这个设备的工作情况,并返回。比如当CPU想要写磁盘时,hypervisor就把相应的东西写到一个host
OS的文件上,这个文件实际上就模拟了虚拟的磁盘。
服务器虚拟化的实现有三个部分的实现,包括CPU虚拟化,内存虚拟化和IO虚拟化。
一、CPU虚拟化:
CPU的虚拟化技术可以单CPU模拟多CPU并行,允许一个平台同时运行多个操作系统,并且应用程序都可以在相互独立的空间内运行而互不影响,从而显著提高计算机的工作效率。虚拟化技术与多任务以及超线程技术是完全不同的。多任务是指在一个操作系统中多个程序同时并行运行,而在虚拟化技术中,则可以同时运行多个操作系统,而且每一个操作系统中都有多个程序运行,每一个操作系统都运行在一个虚拟的CPU或者是虚拟主机上;而超线程技术只是单CPU模拟双CPU来平衡程序运行性能,这两个模拟出来的CPU是不能分离的,只能协同工作。
CPU的虚拟化技术是一种硬件方案,支持虚拟技术的CPU带有特别优化过的指令集来控制虚拟过程,通过这些指令集,VMM会很容易提高性能,相比软件的虚拟实现方式会很大程度上提高性能。虚拟化技术可提供基于芯片的功能,借助兼容VMM软件能够改进纯软件解决方案。由于虚拟化硬件可提供全新的架构,支持操作系统直接在上面运行,从而无需进行二进制转换,减少了相关的性能开销,极大简化了VMM设计,进而使VMM能够按通用标准进行编写,性能更加强大。CPU的虚拟化技术除支持广泛的传统操作系统之外,还支持64位客户操作系统。
虚拟化技术是一套解决方案。完整的情况需要CPU、主板芯片组、BIOS和软件的支持,
Intel和AMD分别开发出VT-x和AMD-V技术,在硬件增加虚拟化功能后,通过CPU截获客户机操作系统对敏感指令的执行或者对敏感指令的访问,并通过异常的方式报告给VMM,VMM接受到报告后,找到对应的虚拟化模块进行模拟,并把最终结果反映在客户机运行环境中。
二、内存虚拟化机制
1.&内存虚拟化的要点:VMM必须对物理内存有最终的控制权,也就是说,它必须控制将客户物理地址空间映射到主机物理地址空间的操作。这样,才可以顺利的实现内存虚拟化
2.&内存虚拟化的方法:内存虚拟化方法:VMM维护一个虚拟机内存管理数据结构——镜像页表(shadow page table)。VMM通过镜像页表给不同的虚拟机分配机器的内存页,如操作系统虚拟内存一样,VMM能将虚拟机内存换页到磁盘,因此,虚拟机申请的内存可以超过机器的物理内存。VMM也可以根据每个虚拟机的要求,动态地分配相应的内存。
三、IO虚拟化
1.&宿主型I/O虚拟化
用宿主型的体系结构,使用宿主操作系统的L/0设备驱动程序。这种结构的缺点之一是大大增加了虚拟化的性能开销;另一个缺点是现代操作系统如Windows和linux并没有资源管理的支持为虚拟机提供性能隔离和服务保证,而这是很多服务器环境的基本要求。
2.硬件I/O虚拟化
I/O子系统的产业趋势是朝着硬件支持的方向发展。拥有足够的硬件支持,直接传送I/O设备到虚拟机中的软件是完全可能的,这将有效地消除所有I/O虚拟开销。要做到这一点, I/O装置需要了解虚拟机的情况和能够支持多个虚拟接口,以便VMM能安全地映射接口到虚拟机。
Intel VT-d是目前硬件I/O虚拟化的代表
本文已收录于以下专栏:
相关文章推荐
一、背景对于Java来说我们知道,Java代码首先会编译成Java字节码,字节码被类加载器加载到JVM里,JVM执行字节码,最终需要转化为汇编指令在CPU上进行执行。Java中所使用的并发机制依赖于J...
在宿主机中,挂载非Raw格式的客户机磁盘需要使用软件包libguestfs和libguestfs-tools。
使用如下命令查看系统中是否安装相应软件包。
[root@manager kvm]# rp...
原地址: .cn/s/blog_687eyd.html
在Virtual Box上安装好一台虚拟机后,如果能把虚拟机的硬盘文件(VDI...
他的最新文章
讲师:王禹华
讲师:宋宝华
您举报文章:
举报原因:
原文地址:
原因补充:
(最多只允许输入30个字)文章责编:gaoxiaoliang& 看了本文的网友还看了
?&&( 8:51:00)?&&( 8:45:00)?&&( 8:43:00)?&&( 8:41:00)?&&( 8:39:00)?&&( 8:35:00)?&&
? ?   ? ?   ? ?   ? ?   ? ?
? ?   ? ?   ?
?   ? ?    ? ?   ? ?   ? ?   ? ?
? ?   ? ?
|     |
|     |
|     |
|     |
|     |
精选推荐专题 |
|        |
实用工具 |
| 大全 | 大全     |
版权声明:如果网所转载内容不慎侵犯了您的权益,请与我们联系,我们将会及时处理。如转载本内容,请注明出处。
Copyright & 2004-
 考试网 All Rights Reserved 
中国科学院研究生院权威支持(北京) 电 话:010- 传 真:010-}

我要回帖

更多关于 虚拟机监控程序未运行 的文章

更多推荐

版权声明:文章内容来源于网络,版权归原作者所有,如有侵权请点击这里与我们联系,我们将及时删除。

点击添加站长微信