ICode9

精准搜索请尝试: 精确搜索
首页 > 其他分享> 文章详细

Armv8-A虚拟化手册(1)

2022-01-20 22:04:08  阅读:262  来源: 互联网

标签:guest 虚拟化 vCPU hypervisor 虚拟机 手册 Armv8 OS


1. Overview

        本指导描述ARMv8-A AArch64的虚拟化支持。所覆盖的内容包括stage2转换,虚拟化异常和trapping。

        本文档包括一些基本的虚拟化理论作为introduction,并给出hypervisor使用这些特性的例子。它不包括一些特定hypervisor的操作,或试图解释从零开始如何写自己的hypervisor。这两项都不在本指导范围内。

        在知道的结尾,你可以检查相关知识。你将学习到两种类型的hypervisor,以及它们怎么样映射到arm异常级别。你将有能力解释trap的操作和它们怎么样用于模拟操作。你将能够列出一个hypersvisor将产生哪种虚拟化异常以及描述他们的机制。

1.1 在开始之前

        我们假设你已经对虚拟化有一个基本的理解,包括虚拟机是什么,和hypervisor的角色。熟悉内存管理中的异常模型和内存转换。

2. 虚拟化的介绍

        这里我们将介绍一些工业化的hypervisor以及虚拟化理论。如果你已经对这些概念很熟悉,你也可以跳过这些内容。

        我们使用术语hypervisor来表示用于创建,管理和调度虚拟机的一系列软件。

2.1 为什么虚拟化重要

        虚拟化是一个广泛使用的技术,支持几乎所有现代云计算和企业基础架构。开发者使用虚拟化来在单个机器上跑多个操作系统(OS),并在不影响主要的计算环境下测试软件。

        虚拟化对服务器系统非常重要,对虚拟化的支持是大多数服务器处理器的要求。这是因为虚拟化给出一些想要的特性给数据中心,包括:

(1)隔离:虚拟化提供了单个物理系统中不同虚拟机之间的隔离。隔离允许在多个分布式计算系统上共享一个物理系统。比如,两个竞争者可以共享数据中心的相同物理机器,而不用访问相互的数据。

(2)高可用性:虚拟机允许在物理机之间无缝透明的迁移工作负载。该技术通常用于从要求维护和替代的出错硬件环境迁移工作负载。

(3)工作负载均衡:为了优化数据中心的硬件和功耗,尽可能使用硬件平台是非常重要的。这可以通过虚拟化的迁移或托管合适的工作负载到物理机上来完成。这意味着物理机尽可能被使用。这也提供了更好的功耗预算以及更好的性能。

(4)基础服务:VM可用来为应用提供基础服务并干预机器的其他部分。比如,一些应用包括传统应用或软件在开发。运行这些软件在虚拟机中可以防止bug或软件的恶意部分影响物理机上的其他应用或数据。

2.2 独立和托管的hypervisor

        hypervisor可以分为两大类:独立的或Type1 hypervisor,和托管的或Type2 hypervisor。

        我们首先看下托管的或Type2 hypervisor。在Type2 hypervisor配置中,host OS完全控制硬件平台和它的所有资源,包括CPU和物理内存。下面图描述了一个Type2 hypervisor:

        如果你之前用过像Virtual Box 或VMWare Workstation等软件,这就是这种hypervisor。Host OS安装在平台上并且hypervisor运行在host OS中,利用已经存在的功能来管理硬件。hypervisor可控制虚拟机,虚拟机本身也运行OS,我们称它为guest OS。

        下面我们在看下Type1 hypervisor:

         你可以看到在这种hypervisor中没有host OS。hypervisor直接跑在硬件上,对硬件平台和资源(包括CPU和物理内存)有完全的控制。像托管的hypervisor一样,独立的hypervisor也控制虚拟机。虚拟机可以运行一个或多个guest OS。

        在ARM上使用最广泛的开源的hypervisor为XEN(独立的,Type1)和KVM(托管的,Type2)。我们将使用这些hypervisor来描述一些点。但是,也有其他可用的hypervisor,包括开源的和闭源的。

2.3 全虚拟化和半虚拟化

        VM经典的定义为一组分开的,隔离的计算环境,但他们无法从真实的物理机上区分。即使在ARM系统上完全模拟真实机器,通常这也不是一件有效率的事。因此,这种模拟并不经常做。比如,模拟一个真实的网卡是很慢的,因为guest OS发起的每个对模拟寄存器的访问必须在软件上由hypervisor处理。这种处理远比在物理设备上直接访问寄存器更昂贵(花时间更多)。

        为了优化性能,一个通常替代的方案为修改guest OS。让guest OS意识到它是运行在VM上,通过提供为高性能的虚拟设备(hypervisor模拟,guest OS访问),guest OS可以获取高的性能,即使是IO。

        严格来讲,完全虚拟化模拟了一个真实的物理机。XEN推广了半虚拟化,它的guest OS部分被修改来运行在一个虚拟硬件环境而不是真实物理环境。这个修改是为了改进性能。

        现在对于大多数支持硬件虚拟化的架构,包括ARM,guest OS大多数不需要修改。Guest OS认为它运行在真实的硬件上,出来IO外设驱动如块设备和网络,它们使用半虚拟化设备和设备驱动。这种半虚拟化的IO设备为VIRTIO和XEN PV Bus。

​​​​​​​2.4 虚拟机和虚拟CPU

        理解VM和vCPU的差异非常重要。VM包含一个或多个vCPU,如下图所示:

        当我们查看本指导的其他文档时,VM和vCPU的差异就很重要。比如,内存的页可能分配给一个虚拟机,因此VM中所有vCPU都可以访问。但是,一个虚拟中断目标为一个特定的vCPU,只能在该vCPU上处理。

NOTE: 严格来讲,我们应该提vPE,而不是vCPU。记住一个PE是一个实现ARM架构的更通用的属于。本指导用vCPU代替vPE是因为vCPU对大多数人更熟悉。但是,在架构文档中,使用vPE。

3. Arch64的虚拟化

        运行在EL2或更高异常级别有一些对虚拟化访问控制的权限:

  1. stage2转换;
  2. EL1/0指令和寄存器访问的陷入trap
  3. 虚拟异常的产生;

        在非安全和安全状态的异常级别如下所示:

        在这个图中,安全EL2为灰色。这是因为在安全状态下支持EL2并不是一直都可用的。这将在安全虚拟化章节讨论。

这个架构支持的特性有:

  1. 安全虚拟化;
  2. Type2 hypervisor;
  3. Nested虚拟化。

标签:guest,虚拟化,vCPU,hypervisor,虚拟机,手册,Armv8,OS
来源: https://blog.csdn.net/flyingnosky/article/details/122610816

本站声明: 1. iCode9 技术分享网(下文简称本站)提供的所有内容,仅供技术学习、探讨和分享;
2. 关于本站的所有留言、评论、转载及引用,纯属内容发起人的个人观点,与本站观点和立场无关;
3. 关于本站的所有言论和文字,纯属内容发起人的个人观点,与本站观点和立场无关;
4. 本站文章均是网友提供,不完全保证技术分享内容的完整性、准确性、时效性、风险性和版权归属;如您发现该文章侵犯了您的权益,可联系我们第一时间进行删除;
5. 本站为非盈利性的个人网站,所有内容不会用来进行牟利,也不会利用任何形式的广告来间接获益,纯粹是为了广大技术爱好者提供技术内容和技术思想的分享性交流网站。

专注分享技术,共同学习,共同进步。侵权联系[81616952@qq.com]

Copyright (C)ICode9.com, All Rights Reserved.

ICode9版权所有