Xen是半虚拟化,需要修改操作系统内核。Vmware是完全虚拟化。

XEN的系统架构

Xen Hypervisor

  1. 直接运行在硬件上,介于操作系统和硬件之间的一层软件,负责管理CPU、内存、中断。

(1)    负责在各个虚拟机之间进行CPU调度和内存分配。

(2)    抽象出虚拟机的硬件,并控制各个VM的执行。

(3)    Xen Hypervisor不会处理网络、存储、视频及其他I/O。

  1. 是在bootloader之后运行的第一个程序。

Guest Domains/Virtual Machines/Domain U

非特权domain,在Xen中运行的一个虚拟机实例,不直接访问硬件。VM相互隔离,运行自己的操作系统和应用。Xen 的guest完全从硬件隔离,没有特权来访问硬件或IO。

客户机类型

(1)    Domain U PV Guests:运行在 Xen Hypervisor上的所有半虚拟化虚拟机。VM上运行的是被修改内核的操作系统。Eg:Linux。

PV Guest有两个驱动:PV网络驱动、PV Block驱动。

(2)    Domain U HVM Guest:所有的完全虚拟化虚拟机或硬件辅助的虚拟化(Intel VT)。Eg:Windows。Xen 使用Qemu来仿真PC硬件。全虚拟化客户机不需要任何内核支持。全虚拟化客户机要比半虚拟化客户机慢,因为需要仿真。

在Domain 0中为每个HVM客户机启动一个特殊的守护进程——Qemu-dm。Qemu-dm支持HVM客户机对于网络和磁盘访问请求。

(3)    PVHPV in an HVM Container:

PV客户机为boot和I/O使用PV驱动,使用HW虚拟化扩展。??

Domain 0

  1. 是一个修改过的Linux kernel,唯一运行在Xen Hyperviosr之上的VM。

(1)    拥有访问物理I/O资源的权限;

(2)    和系统上运行的其他VM交互;

(3)    需要在其他domain启动之前启动。

  1. Domain0包含系统中所有设备的硬件驱动,是其他虚拟机的管理者和控制者。
  2. Domain0也包含控制栈,管理VM创建、删除和配置。
  3. 特权虚拟机,可直接访问硬件,处理所有的系统级I/O函数,与其他虚拟机交互。

Domain 0有两个驱动

(1)Network Backend Driver:处理来自网络的请求。处理所有来自于DomainU虚拟机的请求的本地联网硬件。

(2)Block Backend Driver:处理本地磁盘请求。处理基于Domain U需求的本地存储磁盘读写数据。

Domain的管理和控制:

有一系列用于虚拟环境管理和控制的守护进程(daemons)在domain0虚拟机中。

1.Xend:

Xend守护进程是一个Python应用,Xen环境的系统管理器。支持libxenctrl库,来提出Xen Hypervisor的请求。所有的请求被处理,由XM工具通过一个XML RPC接口,由Xend提交给Domain0。(All requests processed by the Xend are delivered to it via an XML RPC interface by the Xm tool)

2.Xm:一个命令行工具,用户给用户输入,并且由XML PRC传到Xend。

3.Xenstored:

在domain0和所有Domain U客户机之间维护一个包含内存和事件通道链接的记录。

4.Libxeenctrl:是一个提供给Xend的通过Domain0与Xen Hypervisor通信能力的C库。

5.Qemu-dm:

每个HVM客户机运行在一个需要它自己Qemu守护进程的Xen环境。在一个全虚拟化机器的Xen环境中,这个工具用来处理所有的来自于Domain U HVM客户的网络和磁盘请求。Qemu需要访问网络和I/O,因此必须存在于Xen Hypervisor外,建立于Domain0中。

新版Xen中,有个新的工具——Stub-dm,为每个Domain U HVM客户机删除了Qemu,取而代之,它为每个Domain U HVM客户提供一组服务。

6.Xen虚拟固件:

是一个虚拟的BIOS,插入到每个domain U HVM客户机中,保证操作系统接收所有标准启动指令,在通常的引导启动期间提供一个标准的PC兼容软件环境。

Toolstack和控制台:

Toolstack:Domain 0包括一个控制栈,允许用户管理虚拟机创建、销毁和配置。Toolstack通过命令行控制台、图形接口或cloud orchestration stack(如openstack或cloudstack)作为接口驱动。

Xen运行带有很多不同的toolstack,每个toolstack利用一个运行不同工具的API。

Xen操作:

半虚拟化情况下,Domaiin U通过Xen Hypervisor和Domain0与外部网络或存储通信,以完成一个网络或磁盘请求。

  1. Domain U PV客户机PV块驱动通过Xen hypervisorz占用和domain0共享的局部存储器,来接收一个写本地磁盘和数据的请求。
  2. 一个事件通道(event channel)Domain0和Domain U PV客户机存在,允许他们通过在Xen hypervisor中的inter-domain中断异步通信。

(1)    事件通道:是一个在Domain0到Domain U PV客户机的直接链路。

(2)    事件通道通过注册在Xenstored中的带有特殊中断的Xen Hypervisor运行,Domain 0和Domain U PV客户机两者访问本地内存来快速共享信息。

  1. Domain0从Xen hypervisor中接收一个中断,导致PV Block Backend Driver访问本地系统内存从Domain U PV客户共享的内存来读合适的块。共享内存中的数据写入到本地磁盘一个特殊的区域。
  2. Xen PCI Passthru:

改善所有的性能,并且降低负载; PCI Passthru,允许Domain U客户机直接访问本地硬件,没使用Domain U进行硬件访问。

Xen学习——原理要点归纳总结的更多相关文章

  1. 强化学习(十九) AlphaGo Zero强化学习原理

    在强化学习(十八) 基于模拟的搜索与蒙特卡罗树搜索(MCTS)中,我们讨论了MCTS的原理和在棋类中的基本应用.这里我们在前一节MCTS的基础上,讨论下DeepMind的AlphaGo Zero强化学 ...

  2. Objective-C 2.0 基础要点归纳

    本文的阅读基本条件: 具备C/C++基础知识,了解面向对象特征 阅读过<Objective-C 2.0 程序设计(第二版)>.<Objective-C 程序设计 第6版>或相关 ...

  3. 推荐《深入浅出深度学习原理剖析与python实践》PDF+代码

    <深入浅出深度学习原理剖析与Python实践>介绍了深度学习相关的原理与应用,全书共分为三大部分,第一部分主要回顾了深度学习的发展历史,以及Theano的使用:第二部分详细讲解了与深度学习 ...

  4. 参考《深度学习原理与应用实践》中文PDF

    读国内关于深度学习的书籍,可以看看<深度学习原理与应用实践>,对深度学习原理的介绍比较简略(第3.4章共18页).只介绍了"神经网络"和"卷积神经网络&quo ...

  5. Linux学习之要点必备

    在本节课中我将会带领大家秒懂linux命令 要点一:常见基本命令格式 命令名称+选项+参数 例如:#mkdir -r /var/ruofeng/001/ 我们通过逐级创建目录方式解释这个例子,mkdi ...

  6. DeepMind背后的人工智能:深度学习原理初探

    去年11月,一篇名为<Playing Atari with Deep Reinforcement Learning>的文章被初创人工智能公司DeepMind的员工上传到了arXiv网站.两 ...

  7. 集成学习原理:Adaboost

    集成学习通过从大量的特征中挑出最优的特征,并将其转化为对应的弱分类器进行分类使用,从而达到对目标进行分类的目的. 核心思想 它是一种迭代算法,其核心思想是针对同一个训练集训练不同的分类器(弱分类器), ...

  8. JSP学习——原理

    JSP全称是Java Server Pages,它和servle技术一样,都是SUN公司定义的一种用于开发动态web资源的技术.   JSP这门技术的最大的特点在于,写jsp就像在写html,但它相比 ...

  9. 深度学习原理与框架-图像补全(原理与代码) 1.tf.nn.moments(求平均值和标准差) 2.tf.control_dependencies(先执行内部操作) 3.tf.cond(判别执行前或后函数) 4.tf.nn.atrous_conv2d 5.tf.nn.conv2d_transpose(反卷积) 7.tf.train.get_checkpoint_state(判断sess是否存在

    1. tf.nn.moments(x, axes=[0, 1, 2])  # 对前三个维度求平均值和标准差,结果为最后一个维度,即对每个feature_map求平均值和标准差 参数说明:x为输入的fe ...

随机推荐

  1. javascript编程的最佳实践推荐

    推荐的javascript编程的最佳实践,摘要记录在这里: 可维护的代码保证代码的性能部署代码 1 可维护的代码1.1什么是维护的代码:可理解性——其他人可以接手代码并理解它的意图和一般途径,而无需原 ...

  2. Java中的文件操作

    在使用计算机编程中,常常会用到对于文件的操作,以下是我对于Java中文件的相关内容学习之后的一个总结和在学习过程中遇到的一些问题. 一.什么是文件 对于文件进行操作,首先我们要知道什么是文件.在此之前 ...

  3. App Thinning

    App Thinning 由于项目中需要开启Bitcode编译,之前对Bitcode也有些误区,故整理了下相关知识,仅供参考,如有不对,还请指出. 当前 iOS App 的编译打包方式是把适配兼容多个 ...

  4. iOS 数据类型

    标签: 数据类型 1.Objective-C数据类型可以分为:基本数据类型.对象数据类型和id类型. 2.基本数据类型有:int.float.double和char类型. 3.对象类型就是类或协议所声 ...

  5. delphi xe5 android tts(Text To Speech)

    TTS是Text To Speech的缩写,即“从文本到语音”,是人机对话的一部分,让机器能够说话. 以下代码实现xe5 开发的文本转语音的方法 和访问蓝牙一样,这里用javaclass的接口实现 接 ...

  6. PLS-00201: 必须声明标识符 'UTL_FILE'

    解决办法: 用sysdba身份 把UTL_FILE包的执行权限给这个用户. 举例: 1.C:\Users\Anakin>sqlplus /nolog2.SQL> connect /as s ...

  7. MSP430常见问题之FLASH存储类

    Q1:用IAR Embedded Workbench for MSP430 通过JTAG往MSP430上写程序.为了知道片内程序的版本,必须读出Flash 中内容.什么工具软件可以通过JTAG口实现这 ...

  8. 【转】ora-00031:session marked for kill(标记要终止的会话)解决方法

    今天碰到一个问题,有一张表不能操作,很可能是被锁了,首先想到的是kill session,于是执行了下列的脚本找到是哪个session有问题: select object_name, machine, ...

  9. jQuery点击图片弹出大图遮罩层

    使用jQuery插件HoverTreeShow弹出遮罩层显示大图 效果体验:http://hovertree.com/texiao/hovertreeshow/ 在开发HoverTreeTop项目的产 ...

  10. over Oracle

    QL code: sql over的作用及用法RANK ( ) OVER ( [query_partition_clause] order_by_clause )DENSE_RANK ( ) OVER ...