b2科目四模拟试题多少题驾考考爆了怎么补救
b2科目四模拟试题多少题 驾考考爆了怎么补救

关于Xen和准虚拟化技术

电脑杂谈  发布时间:2020-09-09 13:10:13  来源:网络整理

xen内存虚拟化_虚拟硬盘 内存_xen 内存

当入学时,我读了一篇论文“ Xen与虚拟化的艺术”。现在,一年之后,我将进行梳理。以下是我对以Xen为例的半虚拟化技术的理解:

虚拟机概述

首先谈到虚拟机,虚拟机技术是IBM在1960年代和1970年代首次提出的,它被定义为硬件设备的软件模拟实现。在那个时代,计算机硬件的成本很高。为了提高计算机的利用率,提出了一种技术:通过软件将一台计算机虚拟为多台计算机,以为不同的应用程序提供服务。如今,虚拟机技术已被广泛使用,可租用服务器都是使用不同解决方案的所有虚拟化技术。

我们通常提到的虚拟机是系统虚拟机,例如IBM VM / 37 0、 VMware ESX Server,Xen。系统虚拟机在二进制指令集系统结构(ISA)级别提供了完整的系统级环境。因此,用户会感觉到他们正在使用整个计算机。运行多个虚拟机的计算机可以支持多个不同的操作系统。在传统平台上,单个操作系统拥有所有硬件资源,但是通过使用虚拟机,多个操作系统可以共享硬件资源。

虚拟机简介

下图是典型的虚拟机层次结构。它比传统平台多了一个虚拟机(Virtual Machine Monitor),虚拟机VMM位于硬件和虚拟机层之间。虚拟机监视器VMM负责主机和来宾之间的通信。在虚拟机系统中,对于上层应用程序,虚拟机是一台真正的计算机。

虚拟化分类

虚拟化技术可以分为完全虚拟化和半虚拟化。

也就是说,抽象的VM具有完整的物理特性,OS不需要对其进行任何修改即可运行,并且可移植性非常好。但是缺点是效率不高。典型的是VMware,Virtualbox,Virtual PC,KVM-x86。

首先,它解决了x86架构上完全虚拟化的难题。它需要修改操作系统,并且工作效率比完全虚拟化要高得多。典型的是Xen,KVM-PowerPC。

采用半虚拟化技术的原因

x86系统是半虚拟化技术的重要原因。因为x86指令系统中有一些敏感的指令不是特权指令。那是什么意思?这是从特权和敏感指令的角度进行的解释:

特权指令是用于操作和管理关键系统资源的指令。这些指令只能以最高特权级别运行。如果以非最高特权级别运行,则特权指令将引发异常,处理器将进入最高特权级别,然后由系统软件进行处理。但是,并非所有特权指令都会导致异常(x86指令系统中的特权指令存在此问题)。最重要的是,这些以不同特权级别运行的特权指令的结果将有所不同,甚至可能被直接忽略。

xen内存虚拟化_xen 内存_虚拟硬盘 内存

传统机器只有两个概念:特权指令和普通指令,而在虚拟机上,有一个独特的概念:敏感指令。敏感指令是指在虚拟化期间必须以最高特权级别运行的指令。在RISC系统中,所有特权指令都是敏感指令,因此可以支持完全虚拟化。但是,在x86系统的虚拟化中,某些敏感指令不是特权指令,因此这些非特权指令的敏感指令不会在系统运行期间引起异常,并且无法以最高特权级别捕获和执行。当以非最高特权级别运行和以最高特权级别运行时,这些敏感指令将产生不同的结果,这对于要求可靠性能的计算机绝对不能容忍。因此,以Xen为先例的半虚拟化技术主要解决了这一问题,即如何捕获非特权指令的敏感指令。

特权级别

上面多次提到特权级别的概念,这是一个简短的解释。

在操作系统中,我们经常看到用户模式和内核模式的概念。实际上,这两种模式的实现是通过特权级别实现的。如下图所示,大多数计算机体系结构现在具有两个或多个特权级别,以将内核和应用程序软件分开。以x86为例,它具有4个特权级别(0到3),通常用ring表示。Ring之后的数字越小,特权级别越低。在非虚拟机上,Ring0运行操作系统Ring) 1、 Ring2支持设备驱动程序,Ring3运行应用程序,在当前的x86处理器中,64位体系结构已变得非常普遍,因为64位CPU必须支持页表模式,所以只需要两个特权级别:ring 0、 ring3。

Xen虚拟化技术

Xen的总体框架如下图所示。它分为三层,从底层到上层分别是物理层,VMM和域。 VMM层是Xen Hypervisor,它负责为上层操作系统提供虚拟化的硬件资源,管理和分配这些资源,并确保上层虚拟机(也称为虚拟域)之间的隔离。 Xen采用混合模式,因此设置了特权域来协助Xen管理其他域并提供虚拟资源服务。特权域称为Domain0,其余域称为DomainU。

下面按级别介绍Xen的结构。底层硬件将不再赘述。

VMM层

控制接口也称为特权控制接口,它只能由Domain0使用,以帮助Domain0控制和管理其他域。控制界面提供的特定功能包括域的创建。控制界面的特定功能包括域创建,销毁,挂起,恢复和迁移,其他域的CPU调度,内存分配和设备访问。

提供除虚拟CPU和MMU之外的所有硬件虚拟工作,包括DMA / IO,驱动程序,虚拟PCI地址配置,虚拟硬件中断等。此接口只能由具有本地设备驱动程序的域使用,而对于其他域,通过设备通道仅提供虚拟硬件服务。

Xen为每个域建立了一个VCPU结构,以接收来宾OS中传递的指令。 VCPU将大多数指令直接提交给房间中的CPU来执行,并且需要确认特权指令并移交给Xen代表您执行。

用于帮助Guest OS完成从虚拟地址到物理地址的转换。客户物理地址层已添加到Xen系统,因此地址从原始的两层结构更改为三层结构。 Xen仍然可以使用硬件MMU通过虚拟MMU完成地址转换。

这是在Domain和Xen之间以及Domain之间使用的异步事件通知机制。它用于处理虚拟中断,物理中断以及来宾OS域之间的通信。事件通道是Xen系统的基本机制。与超级调用一起,它在Xen的每个虚拟子系统中都起着重要的作用。

xen内存虚拟化_xen 内存_虚拟硬盘 内存

虚拟域层

在硬件虚拟化技术诞生之后,自Xen 3. 0开始,它无需更改内核即可支持Guest OS。运行未修改内核的操作系统的域称为硬件虚拟机(HVM)。现在,在Xen上运行的虚拟域包括四种类型:特权域(Domain 0),独立设备驱动程序域(IDD),硬件虚拟域和非特权域(DomainU))。

上面已经提到了特权域。特权域Domain0在整个Xen系统中是唯一的。 Domain0是随Xen的启动而创建的,并且是第一个要创建的Domain。 Domain0具有本机设备驱动程序,具有直接访问硬件设备的特权,并通过与Xen提供的控制界面进行交互来控制和管理其他虚拟域。

在Dom0中运行的控制面板可以控制其他域的创建,破坏,配置和迁移。设备管理器负责设备驱动程序的初始化和设备访问的管理。在访问设备的过程中,它直接模拟真实的物理设备是不同的。 Xen向其他域提供抽象设备。例如,其他域通过网卡的前端驱动程序看到的网卡设备仅是通用网卡设备,而不是特定网卡。域通过网卡的前端驱动程序发送I / O请求后,Dom0使用网卡的后端驱动程序确定特定的网卡,然后本机驱动程序完成I / O请求。

在最简单的Xen结构中,只有一个特权域Dom0。此时,Xen就像一个硬件设备抽象层,它隐藏了复杂的x86架构。所有硬件设备均由Dom0 Guest OS控制。这种结构有很大的问题。如果特殊的设备驱动程序包含某些漏洞,则可能会破坏整个Dom0内核并导致整个系统崩溃。因此,设备驱动程序从Dom0移到另一个虚拟域。一方面,它可以减少Dom0的运行负载。另一方面,Yang也可以降低系统风险。一旦虚拟域由于使用设备驱动程序而失败,Dom0可以轻松地重新启动虚拟域。这些由Dom0授权,可以使用特定的设备。驱动程序的虚拟域称为隔离驱动程序域(IDD)。它可以避免DMA需求和I / O中断对来宾OS的影响。

Xen 3. 0支持运行未修改内核的Guest OS,但这需要使用特殊的硬件技术,例如Intel的VT-x或AMD的ADM-V技术。运行这些来宾OS的虚拟域称为硬件虚拟域。由于Guest OS不会修改内核,因此Guest OS无法直接支持Xen在半虚拟化条件下采用的单独的设备驱动程序模型,这意味着Xen必须模拟Guest OS可以支持的环境。如果HVM中的Guest OS要使用Xen的准虚拟化技术,它必须首先通过执行CPUID指令来访问特殊的虚拟寄存器和超级调用页面,然后像其他域中的Guest OS一样,通过修改hypercall页面表来发布一个新的超级通话。

严格来说,DomU指的是Dom0以外的域,但是由于IDD在获得Dom0的授权后可以使用设备驱动程序直接访问物理设备,因此IDD也属于“特权域”。因此,DomU除了Dom0和IDD其他域之外,还包括上述HVM;与Dom0相比,DomU受许多限制。首先要做的是访问硬件。 HVM和常规DomU都不能直接访问物理设备,并且必须诉诸Dom0或IDD。完成。

虚拟域中的功能模块

设备管理器位于Domian0和IDD(独立设备域)中。它可以用作系统BIOS的扩展,为所有设备提供通用的管理接口,并负责在域启动时加载特定的设备驱动程序并建立管理。设备通道,提供硬件配置界面并处理设备访问错误。

控制面板是在Dom0中运行的一系列软件集合,用于与Xen中的控制界面进行交互并完成整个Xen系统的管理,这等效于系统的常规控制台。它可以控制其他域的创建,破坏,配置和迁移。

本地设备驱动程序是指原始操作系统中使用的普通设备驱动程序。在Xen系统中,只有授权域才有权使用本机设备驱动程序来访问实际的硬件设备。通过支持本机设备驱动程序,Xen可以最大限度地在操作系统中使用单个设备驱动程序,减少Xen开发的难度并提高效率。通过安全的硬件接口,可以将这些本机设备驱动程序限制为特定的I / O空间。域提供设备访问服务。

前端/后端设备驱动程序一起形成Xen单独的设备驱动程序模型,该模型负责完成对硬件设备的域访问。其中,位于其他域中的前端设备驱动程序将I / O和I / O请求发送到Domain0(或IDD)中的后端设备驱动程序,后端设备驱动程序接收I / O请求并在其上执行安全检查他们。然后,将通过安全检查的I / O请求移交给本机设备驱动程序进行处理。

在Xen支持硬件虚拟化技术之后,设备模型被引入Domain0。它主要用于处理硬件虚拟机(即,VT技术使来宾OS无需修改)。来宾操作系统访问设备。设备模型访问模型主要基于QEMU。

Xen虚拟化技术

Xen从系统的三个方面进行虚拟化:CPU虚拟化,内存虚拟化和I / O虚拟化

xen 内存_xen内存虚拟化_虚拟硬盘 内存

CPU虚拟化(1)半虚拟化

如前所述,在x86体系结构中,某些敏感指令不是特权指令。这些说明不能自动生成异常。因此,如果系统正常运行,则必须捕获这些说明。因此,Xen使用修改Guest OS内核的方法来替换这些有缺陷的指令。在这种模式下,Xen位于操作系统和硬件之间,为运行在其上的Guest OS内核提供了虚拟化的硬件环境。此时,Xen在ring0上以最高特权级别运行,该操作系统的特权被释放,在ring1和ring3上运行以运行应用程序,从而在虚拟机系统中形成“ 0/1/3模型”。当Xen占据最高特权级别时,在Xen下运行的Guest OS内核将无法运行某些特权指令,并会生成常规保护错误。 Xen必须提供一个接口,以通过超级调用执行这些特权指令。下图显示了虚拟化前后特权级别的变化。

([2)硬件虚拟化

上述半虚拟化方法是在开始时不支持硬件虚拟化技术的解决方案。但是,为了克服半虚拟化带来的不便,例如修改Guest OS和性能开销。现在,英特尔和AMD在硬件级别支持虚拟化,这是众所周知的英特尔VT,AMD VT和其他技术。在硬件虚拟化技术的支持下,那些最初有缺陷的指令可以直接通过硬件捕获,而无需修改Guest OS内核,从而提高了系统的可移植性。

内存虚拟化

在准虚拟化模式下,Xen的内存虚拟化使用内存分段保护机制使Xen和Guest OS在同一内存地址空间中共存,从而简化了Xen对域内存的分配和管理,并使用内存分页机制,Xen可以确保内存中每个域的有效隔离(这是使用分页机制隔离进程的想法)。下图显示了Xen和Guest OS共存的内存地址空间。

Xen需要确保任何两个非特权域都不会访问该内存区域的同一虚拟域,因为必须确认每个页面或页面目录的更新,以确保每个域只能控制自己的页面表。通过修改Guest OS内核,Xen允许Guest OS也参与内存管理工作,从而Xen可以更加关注内存虚拟化中更重要的内存隔离工作,并且还可以将硬件MMU纳入这三个领域。客户操作系统的层地址在转换中起作用。


本文来自电脑杂谈,转载请注明本文网址:
http://www.pc-fly.com/a/shoujiruanjian/article-317246-1.html

相关阅读
    发表评论  请自觉遵守互联网相关的政策法规,严禁发布、暴力、反动的言论

    热点图片
    拼命载入中...