Xen地址空间映射

合集下载

Xen

Xen

Xen 半虚拟化技术综述1、 引言现代计算机具有足够强大的能力来利用虚拟化技术支持多个虚拟机(VM: virtual machines ),并且在每个虚拟机上各自运行单独的操作系统实例。

虚拟化技术并没有统一的实现,从广义的角度讲,虚拟化包括硬件分区技术、平台模拟技术、完全虚拟化技术、半虚拟化技术、基于容器的虚拟化技术、预虚拟化技术等。

并且由于硬件虚拟化技术的支持,使得虚拟化的发展更进一步。

这些虚拟化技术中,在性能方面Xen 的半虚拟化技术显得尤为突出。

Xen 是由英国剑桥大学发起的一个基于开源代码(Open Source)的混合模型虚拟机系统,支持同时运行100个虚拟机,最初Xen 仅面向32位的X86体系结构进行设计开发,Xen 3.0之后开始支持64位的X86_64体系结构和Intel 安腾架构(ItaniumArchitecture ,IA64),支持IBM 的PowerPC 架构的版本正在开发中。

Xen 最初设计为一个泛虚拟化(也称作半虚拟化)实现,要求修改客户机操作系统。

其引入了服务管理接口(Hypercall)和事件通道机制(Event Channel),实质上修改了X86体系架构。

通过预先定义的客户机和用于资源管理的虚拟机监视器(VMM: VM monitor )之间的内存数据共享和交换机制,使得基于Xen 架构的虚拟系统具有非常好的总体性能。

与非虚拟化环境相比,Xen 本身的开销可以低至3%以下。

2、 XEN 虚拟化总体架构Xen 虚拟化架构如图2-1所示,监控程序(Xen Hypervisor)位于操作系统和硬件之间,运行在在最高优先级(Ringo)上,为其上运行的操作系统内核(被称为Guest OS )提供虚拟化的硬件环境。

Guest OS 内核运行在较低的优先级上(Ringl),运行在Guest OS 中的应用程序还是运行在最低的优先级上(Ring3)。

每一个Guest OS 都运行在一个虚拟域(Domain)中,其中有一个主控制域(被称为Domain0),拥有对整个(或部分)物理系统资源的管理功能,并提供对整个系统的管理平台,负责创建和删除其他的虚拟域(被称为DomainU)。

Xen-VMware-ESXi-Hyper-V和KVM等虚拟化技术的原理解析

Xen-VMware-ESXi-Hyper-V和KVM等虚拟化技术的原理解析

Xen,VMware ESXi,Hyper-V和KVM等虚拟化技术的原理解析XEN 与 VMware ESXi,Hyper-V 以及 KVM 特点比较:XEN 有简化虚拟模式,不需要设备驱动,能够保证每个虚拟用户系统相互独立,依赖于 service domains 来完成一些功能;Vmware ESXI 与 XEN 比较类似,包含设备驱动以及管理栈等基本要素,硬件支持依赖于 VMware 创建的驱动;Hyper-V 是基于 XEN 管理栈的修改;KVM 与XEN 方式不同,KVM 是以Linux 内核作为管理工具得。

虚拟机的体系结构XEN 体系结构图 3. XEN 体系结构图一个XEN 虚拟机环境主要由以下几部分组成:XEN Hypervisor;Domain 0 —— Domain Management and Control(XEN DM&C);Domain U Guest(Dom U)下图4 显示除了各部分之间的关系:图 4. Xen 三部分组成之间关系图XEN Hypervisor :XEN Hypervisor 是介于操作系统和硬件之间的一个软件描述层。

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

XEN Hypervisor 不仅抽象出虚拟机的硬件,同时还控制着各个虚拟机的执行。

XEN Hypervisor 不会处理网络、存储设备、视频以及其他I/O. Domain 0:Domain 0 是一个修改过的Linux kernel,是唯一运行在Xen Hypervisor 之上的虚拟机,它拥有访问物理I/O 资源的权限,同时和系统上运行的其他虚拟机进行交互。

Domain 0 需要在其它Domain 启动之前启动。

Domain U:运行在Xen Hypervisor 上的所有半虚拟化(paravirtualized)虚拟机被称为“Domain U PV Guests”,其上运行着被修改过内核的操作系统,如Linux、Solaris、FreeBSD 等其它UNIX 操作系统。

云计算中XEN虚拟机安全隔离相关技术综述

云计算中XEN虚拟机安全隔离相关技术综述

云计算中XEN虚拟机安全隔离相关技术综述王雅超;黄泽刚【期刊名称】《信息安全与通信保密》【年(卷),期】2015(000)006【总页数】3页(P85-87)【作者】王雅超;黄泽刚【作者单位】北京林业大学北京密码管理局北京;北京密码管理局北京【正文语种】中文引言将系统进行虚拟化后,一台物理计算机系统虚拟化为多台虚拟计算机系统,每台虚拟机都有自己的硬件(包括CPU、内存、I/O等设备),通过虚拟化层的模拟,虚拟机中的操作系统认为自己独占一个操作系统在运行。

每个虚拟机中的操作系统可以完全不同,其执行环境也是完全独立的。

利用计算虚拟化技术可以实现快速存储和计算性能的无缝扩展,因此虚拟化技术为云计算提供了很好的底层技术平台,是云计算技术的精髓。

但是云计算平台上的云架构提供者必须向客户提供具有安全隔离保证的虚拟机[6],在保证共享资源的前提下,实现虚拟机的安全运行[7]。

从目前的情况来看,提供给使用者的虚拟机必须保证虚拟机与宿主机之间运行指令、存储空间、网络流量和用户访问的隔离。

虚拟化实现技术中,虚拟化层就是业内定义的VMM(虚拟机监视器)。

从VMM提供的虚拟化平台类型可以将虚拟化技术分为完全虚拟化和半虚拟化两大类:安全虚拟化指客户操作系统不需要做任何修改就可以运行;半虚拟化要求操作系统进行修改来适应虚拟化平台。

目前半虚拟化技术基本很少被采用,VMM基本都采用完全虚拟化技术。

完全虚拟化经历了两个阶段:软件辅助的完全虚拟化和硬件辅助的完全虚拟化。

随着虚拟化技术成为云计算的核心技术,日益发展壮大,为了能够取得先机,x86厂商在硬件上加入了对虚拟化的支持,因此目前基本上所有的VMM 都是基于硬件辅助虚拟化实现的完全虚拟化。

本文以Intel的硬件辅助虚拟化技术为例论述底层虚拟化的实现。

XEN诞生于剑桥大学实验室,XEN 是一个基于X86架构、发展最快、性能最稳定、占用资源最少的开源虚拟化技术,Xen可以在一套物理硬件上安全的执行多个虚拟机,与 Linux是一个完美的开源组合,Novell SUSE Linux Enterprise Server最先采用了XEN虚拟技术[2]。

Xen简介与使用

Xen简介与使用

Xen简介与使用1.2 xen简介xen 是在剑桥大学作为一个研究项目被开发出来的,它已经在开源社区中得到了极大的推动。

xen 是一款半虚拟化(paravirtualizing)vmm(虚拟机监视器,virtual machine monitor),这表示,为了调用系统管理程序,要有选择地修改操作系统,然而却不需要修改操作系统上运行的应用程序。

虽然vmware 等其他虚拟化系统实现了完全的虚拟化(它们不必修改使用中的操作系统),但它们仍需要进行实时的机器代码翻译,这会影响性能。

由于xen 需要修改操作系统内核,所以您不能直接让当前的linux 内核在xen 系统管理程序中运行,除非它已经移植到了xen 架构。

不过,如果当前系统可以使用新的已经移植到xen 架构的linux 内核,那么您就可以不加修改地运行现有的系统。

图1-1图1-1简单的xen 架构xen 是一个开放源代码的para-virtualizing虚拟机(vmm)或“管理程序”,是为x86架构的机器而设计的。

xen 可以在一套物理硬件上安全的执行多个虚拟机。

安装:yum install kernel-xen xen1.2.1 硬件支持目前运行在x86架构的机器上,需要p6或更新的处理器(比如pentium pro, celeron, pentium ii, pentium iii, pentium iv, xeon, amd athlon, amd duron)。

支持多处理器,并且支持超线程(smt)。

另外对ia64和power架构的开发也在进行中。

32位xen支持最大4gb内存。

可是xen 3.0 为intel处理器物理指令集(pae)提供支持,这样就能使x86/32架构的机器支持到64gb 的物理内存。

xen 3.0也能支持x86/64 平台支持,比如intel em64t 和amd opteron能支持1tb 的物理内存以上。

1.2.2 基于xen的系统架构基于xen的操作系统,有多个层,最底层和最高特权层是xen程序本身。

虚拟化技术Xen及其应用

虚拟化技术Xen及其应用

虚拟化技术Xen及其应用[摘要]Xen是一个开放源代码,基于x86 CPU架构的虚拟机监视器(VMM),借助于Xen 可以在单个物理硬件上同时实现多个操作系统的运行。

主要介绍Xen 的特点和结构,实例演示以及应用领域。

[关键词]Xen虚拟机半虚拟全虚拟一、引言随着服务器整合需求不断的升温,虚拟化技术正越来越受到关注。

而伴随着现代计算机不断增强的处理能力,利用虚拟化技术实现多个不同的操作系统在同一台计算机上的高性能运行将带来广阔的发展前景。

利用Xen 可以在一台计算机实现多个操作系统的同时运行,Xen可以广泛应用于服务器整合领域以及软件开发过程中。

二、Xen简介Xen是一个开放源代码,基于x86 CPU架构的虚拟机监视器(VMM),借助于Xen 可以在单个物理硬件上同时实现多个操作系统的运行。

Xen支持x86/32, x86/64平台,其虚拟机的性能能够接近真实硬件环境,同时它实现了不同计算机间的虚拟机的动态迁移,即允许虚拟机操作系统以及其上的应用程序动态地在服务器间互相迁移,实现了服务器负载的均衡,最大限度的做到资源的合理应用。

Xen虚拟机能最大支持32个虚拟CPU(VCPU),并允许虚拟CPU的热插拔。

随着Intel和AMD在其CPU中增加辅助虚拟化技术(Intel VT和AMD-V),Xen已经实现全虚拟,即不用修改虚拟机操作系统即可实现对于系统的虚拟化,增加了Xen的应用范围。

从Xen3.0起Xen同时支持半虚拟(para-virtualization)和基于硬件的全虚拟(full virtualization)。

半虚拟化的Xen虚拟机主要为了实现系统的高性能,它需要通过修改客户操作系统来实现利用Xen提供的平台接口。

和半虚拟相比,全虚拟无须修改客户操作系统,但是它需要为客户操作系统提供一个完全虚拟化的平台。

三、Xen整体结构Xen 可以同时实现管理多个虚拟机客户操作系统的独立运行,通过Xen对各个域(Domain)的合理调度可以实现高效利用CPU资源。

STM32F103VE-FSMC 的设置

STM32F103VE-FSMC 的设置
33 - HSYNC 34 - LEDA 35 - LED1 36 - LED2 37 - LED3 38 - LED4 39 - X+ 40 - Y+
41 - X- 42 - Y- 43 - GND 44 - GND 45 - VCC
*/
void LCD_CtrlLinesConfig(void)
/*设置存储器类型*/
FSMC_NORSRAMInitStructure.FSMC_MemoryType = FSMC_MemoryType_SRAM;
/*设置数据宽度*/
FSMC_NORSRAMInitStructure.FSMC_MemoryDataWidth = FSMC_MemoryDataWidth_16b;
p.FSMC_AddressHoldTime = 1; /*ADDHOLD 地址保持时间*/
p.FSMC_DataSetupTime = 20; /*DATAST 数据建立时间*/
p.FSMC_BusTurnAroundDuration = 0; /*BUSTURN 总线返转时间*/
p.FSMC_CLKDivision = 0; /*CLKDIV 时钟分频*/
* Function Name : LCD_FSMCConfig
* Description : Configures the Parallel interface (FSMC) for LCD(Parallel mode)
* Input : None
* Output : None
* Return : None
/* Set PD.00(D2), PD.01(D3), PD.04(NOE), PD.05(NWE), PD.07(NE1), PD.08(D13),

Xen地址空间映射

Xen地址空间映射

Xen地址空间映射By Echoa1Xen内存子系统内存子系统在os中本身就比较复杂,那么在xen中是如何实现的呢。

下面我将通过MMU 虚拟化来了解它。

Xen内存子系统,即实现内存虚拟化,其主要工作旨在独立三个内存管理空间,即xen,操作系统和应用程序的内存空间。

这个其实比较好理解,在没有虚拟化的环境中,操作系统和应用程序的空间就是相互独立的。

内存虚拟化在某种程度上依赖于cpu虚拟化。

MMU是完成逻辑地址到物理地址转换的硬件设备,它主要有两个部件组成,分段单元和分页单元。

如图4.1所示为地址转过程。

下面我们将从伪物理模型,xen的内存空间分布,xen的分段机制,xen的分页机制这几方面来讨论MMU的虚拟化。

1.1伪物理模型伪物理模型,即在虚拟地址和真实的机器物理地址中插入了一层伪物理地址。

伪物理地址即是guest os看到的的物理地址,它和未虚拟化时os看到的物理地址一样是连续的。

机器物理地址是指真实的硬件物理地址,我们称它为机器地址。

如图4.2所示为guest os的伪物理地址和硬件的机器地址。

在未虚拟化的os中,引入了虚地址的概念使得应用程序认为自己可以使用整个内存空间,并且该空间是连续的。

同样的道理,引入伪物理模型使得os拥有整个内存空间,满足os的“连续性”要求。

但引入伪物理模型的更重要的原因是因为虚拟机的活动移植。

如果不考虑活动移植,则xen可以通过修改guest os的内存分配和地址转换方式实现对分离的物理内存支持。

考虑一下活动移植中,如果虚拟机要从A宿主机迁移到B宿主机,很难保证虚拟机在宿主机A和宿主机B中相同物理地址地址的内存页面可用。

1.2xen的内存空间分布由于部分硬件原因(TLB刷新),出于性能的考虑,x86体系的内存虚拟化采用了以下两种技术。

在泛虚拟化中由guest os负责分配和管理硬件页表,最小化xen对页表操作的影响,保证了安全性和隔离性;xen为自己保留了顶部的虚拟地址空间(在x86_32未启用PAE的情况中这个值为64MB),避免在进入和离开xen时的TLB刷新操作。

xen中客户系统的IO设备地址访问

xen中客户系统的IO设备地址访问

Xen中客户系统的IO设备地址访问By Echoa` 1.IO设备访问方式1.访问IO资源设备通常会提供一组寄存器,如控制寄存器、数据寄存器和状态寄存器等。

这些寄存器可能位于I/O空间,也可能位于内存空间。

当这些寄存器位于I/O空间时,通常被称为I/O端口。

当这些寄存器位于内存空间时,对应的内存空间被称为I/O内存。

通常,除X86外,嵌入式处理器(比如ARM,PowerPC等)一般只存在内存空间。

对设备的访问分为IO映射方式和内存映射方式。

但是,这两者在硬件实现上的差异对于软件来说是完全透明的,驱动程序开发人员可以将内存映射方式的I/O端口和外设内存统一看作是“I/O内存”资源。

但是,用于I/O指令的“地址空间”相对来说是很小的。

事实上,现在x86的I/O地址空间为64KB,I/O地址空间已经非常拥挤。

随着计算机技术的发展,单纯的I/O端口方式无法满足实际需要了,因为这种方式只能对外设中的几个寄存器进行操作。

而实际上,需求在不断发生变化,例如,在PC上可以插上一块图形卡,有2MB的存储空间,甚至可能还带有ROM,其中装有可执行代码。

自从PCI总线出现后,不管是CPU的设计采用I/O端口方式还是I/O内存方式,都必须将外设卡上的存储器映射到内存空间,实际上是采用了虚存空间的手段,这样的映射是通过ioremap()来建立的。

1)I/O映射方式(I/O-mapped)典型地,如X86处理器为外设专门实现了一个单独的地址空间,称为“I/O地址空间”或者“I/O端口空间”,CPU通过专门的I/O指令(如X86的IN和OUT指令)来访问这一空间中的地址单元。

I/O映射方式的访问分以下两种。

一种是直接访问即不映射到内存空间,如图1所示是访问流程。

首先在设备打开或驱动模块被加载时申请IO端口区域,之后使用inb(),outb()等I/O 端口操作函数进行端口访问,最后在设备关闭或驱动被卸载时释放IO端口范围。

访问IO空间的另外一种方式是将IO端口映射到内存进行访问,其访问流程如图2所示。

  1. 1、下载文档前请自行甄别文档内容的完整性,平台不提供额外的编辑、内容补充、找答案等附加服务。
  2. 2、"仅部分预览"的文档,不可在线预览部分如存在完整性等问题,可反馈申请退款(可完整预览的文档不适用该条件!)。
  3. 3、如文档侵犯您的权益,请联系客服反馈,我们会尽快为您处理(人工客服工作时间:9:00-18:30)。

Xen地址空间映射
By Echoa
1Xen内存子系统
内存子系统在os中本身就比较复杂,那么在xen中是如何实现的呢。

下面我将通过MMU 虚拟化来了解它。

Xen内存子系统,即实现内存虚拟化,其主要工作旨在独立三个内存管理空间,即xen,操作系统和应用程序的内存空间。

这个其实比较好理解,在没有虚拟化的环境中,操作系统和应用程序的空间就是相互独立的。

内存虚拟化在某种程度上依赖于cpu虚拟化。

MMU是完成逻辑地址到物理地址转换的硬件设备,它主要有两个部件组成,分段单元和分页单元。

如图4.1所示为地址转过程。

下面我们将从伪物理模型,xen的内存空间分布,xen的分段机制,xen的分页机制这几方面来讨论MMU的虚拟化。

1.1伪物理模型
伪物理模型,即在虚拟地址和真实的机器物理地址中插入了一层伪物理地址。

伪物理地址即是guest os看到的的物理地址,它和未虚拟化时os看到的物理地址一样是连续的。

机器物理地址是指真实的硬件物理地址,我们称它为机器地址。

如图4.2所示为guest os的伪物理地址和硬件的机器地址。

在未虚拟化的os中,引入了虚地址的概念使得应用程序认为自己可以使用整个内存空间,并且该空间是连续的。

同样的道理,引入伪物理模型使得os拥有整个内存空间,满足os的“连续性”要求。

但引入伪物理模型的更重要的原因是因为虚拟机的活动移植。

如果不考虑活动移植,则xen可以通过修改guest os的内存分配和地址转换方式实现对分离的物理内
存支持。

考虑一下活动移植中,如果虚拟机要从A宿主机迁移到B宿主机,很难保证虚拟机在宿主机A和宿主机B中相同物理地址地址的内存页面可用。

1.2xen的内存空间分布
由于部分硬件原因(TLB刷新),出于性能的考虑,x86体系的内存虚拟化采用了以下两种技术。

在泛虚拟化中由guest os负责分配和管理硬件页表,最小化xen对页表操作的影响,保证了安全性和隔离性;xen为自己保留了顶部的虚拟地址空间(在x86_32未启用PAE的情况中这个值为64MB),避免在进入和离开xen时的TLB刷新操作。

利用分段机制,xen和guest os可共处于同一地址空间,简化了xen对Domain的内存分配和管理。

利用分页机制,xen保证了各个Domain在内存上的有效隔离。

在未启用PAE 的情况下,xen保留了高64M内存空间给hypervisor,中间部分给内核,其余部分给应用程序。

图4.3显示了一个在xen上运行的类Unix系统的内存布局示例。

Xen的内存空间只能在ring0模式下访问,即只允许xen访问。

ring1的内存空间只能在ring1和比它高的模式下访问,即允许xen和内核访问。

应用程序的内存空间采用类似的原理。

1)xen的分段机制
在x86_32体系中,采用了分段和分页方式管理内存,事实上如今大部分系统都不采用分段技术。

体系定义的段在两类表中,即局部描述符表(LDT)和全局描述符表(GDT)。

泛虚拟化中,Xen上运行的内核只能更改LDT,更改GDT需通过超级调用(hypercall)。

Xen的分段机制其实和linux中类似,也没有过多的采用分段机制,但xen利用分段机制保留了虚地址空间的顶部给xen。

通过代码,我们可以得出如下数据。

base LIMIT DPL
__XEN_CS0x000000000xFFFFF0
__XEN_DS0x000000000xFFFFF0
__KERNEL_CS0x000000000xFC3FF1
__KERNEL_DS0x000000000xFC3FF1
__USER_CS0x000000000xFC3FF3
__USER_DS0x000000000xFC3FF3 2)xen的分页机制
Xen的分页实现和linux内核稍有不同。

在linux2.6.11版本之后,linux采用四级分页模
型,之后根据具体平台不同调整分页级别,合并页目录。

而xen则不同,它依据平台选择页表级别。

在x86_32中,未启用PAE xen支持二级分页,启用PAE支持三级分页,X86_64中支持四级分页。

为了实现Domain的安全隔离,guest os对页表的更新必须由xen进行确认,xen提供了一些超级调用来完成这项工作。

在未经xen的确认时,guest os即使对自己的页表也无权更改。

出于性能考虑,guest os可以批处理页表更新。

因为伪物理模型的引入,有几个概念需注意。

MFN指的是真实的物理机器的页框号,比如用在伪物理地址到机器地址的转换中。

GMFN指客户机认为的真实机器的物理页框号,在泛虚拟化中GMFN=MFN,在全虚拟化中由于guest os意识不到,GMFN!=MFN,GMFN=GPFN。

GPFN指guest os的物理页框号,即guest os看到的连续的物理地址空间。

PFN在具体上下文中可以指以上三种。

在xen的分页模式中,有三种模式即直接模式,影子模式和硬件支持页表,在xen中会根据情况使用。

a.直接模式
直接模式用在泛虚拟化中,它的效率很高,但是guest os必须经过修改。

在这种模式下,guest os维护的页表对MMU可见。

由guest os更新页表,但是必须经过xen验证。

为了验证页表更新,xen将每一个内存页和一种页类型相关联。

页类型分为页目录(PD),页表(PT),局部描述符表(LDT),全局描述符表(GDT),读写页(RW)。

不论什么类型的页,guest os都可以读自己的内存。

xen提供了超级调用mmu_upadte批处理验证页表更新。

由xen维护M2P (Machine to Physical)表,且该表对guest os可见,guest os维护P2M(Physicall to Machine)表。

页表中存储的内容是HPA(硬件物理地址),如图4.4所示为直接模式图。

此外还存在一种可写模式,它其实是直接模式的扩展。

Guest os有一种错觉感觉自己可以直接更新页表。

在这种模式下,xen可以捕捉到guest os的更新页表。

如果更新发生时,xen会临时允许guest os对页的写访问,同时将当前使用的页和页表断开连接,待重新验证后连接入页表,此时新更新的表项才对MMU可见。

xen提供了vm_assist这个超级调用完成该功能。

如图4.5所示为可写页表原理图。

b.影子模式
影子模式用在全虚拟化和泛虚拟化的活动移植中,它的效率很低。

在这种模式下,guest os和平时一样使用页表。

但是该页表对MMU不可见。

Xen在自己的内存中维护guest os页表的一个副本。

M2P表和P2M表均由xen维护,guest os对两个表都不知道。

如图4.6所示为影子模式图。

c.硬件支持页表
硬件支持页表正如名字所示,该类型页表需要硬件的支持,它用在全虚拟化中。

Intel 提供了Extended Page Tables(EPT),AMD有或“Nested Paging”或NestedPage Tables(NPT)。

它的原理很简单,由硬件完成P2M转换。

相关文档
最新文档