QNX Hypervisor 2.0包括虚拟机监控器微内核(hypervisor microkernel)和一个或多个qvm进程实例。
概述
下图展示了QNX Hypervisor的体系结构的高层视图,以及一些用于访问虚拟和物理设备的配置。并没有把所有可能的客户机设备(guest-device)的配置都显示出来;这里显示的只是为了说明一些可能的配置。
图1:QNX Hypervisor 2.0的概览,展示了虚拟机以及客户机访问虚拟和物理设备的一些可能方法。
上面的图展示了一个虚拟机监控器系统的静态视图。不幸的是,它必然具有误导性,因为它可以被解释为客户机实际是在虚拟机或宿主机系统上运行的;更糟的是,在描述虚拟机监控器系统时,我们经常说客户机正在VM中运行。
事实上,客户机实际上并不在VM中运行。虚拟机监控器不是为CPU翻译客户指令的中介。VM定义了虚拟硬件(请参阅“Virtual devices虚拟设备”),并与透传硬件(请参阅“Pass-through devices透传设备”)一并呈现给客户机,客户机不需要知道它在“VM”中运行,而不是在由硬件直接定义的环境中运行。
也就是说,当客户机在物理CPU上运行指令时,就像客户机在没有虚拟机监控器的情况下运行一样。只有当客户机尝试执行不允许执行的指令时,虚拟化硬件才会捕获该尝试并强制客户机退出。在陷阱中,硬件通知虚拟机监控器,虚拟机监控器保存客户机的上下文,并完成客户机已经开始但无法自己完成的任务。完成任务后,虚拟机监控器将恢复客户机的上下文并将执行过程返还给客户机(客户机入口)。
下面的拉哈夫线(Lahav line)展示了虚拟机管理器与其客户机之间更动态的交互视图。为了简单起见,它假设执行路径是在单个CPU上的。
图2:一个拉哈夫线,显示QNX Hypervisor系统中的执行过程,是如何在虚拟机管理器及其客户机之间进行切换的。在陷阱中,虚拟机管理器管理客户机退出,保存客户机上下文,然后在客户机进入之前恢复上下文。
有关虚拟机管理器如何缓和客户机中的时间漂移(由于需要客户机退出而导致)的信息,请参阅“Time时间”。
支持的体系结构和硬件
QNX Hypervisor支持以下体系结构和硬件:
ARM
ARMv8架构的Aarch64硬件
x86
x86架构的x86-64硬件
提示:
对于ARM和x86平台,虚拟机管理器主机域都需要64位硬件,但支持64位和32位的客户机。
客户机操作系统必须按运行虚拟机管理器主机的硬件体系结构来编译。例如,ARM 32位和64位客户机只能在Aarch64硬件上运行。
CPU特权级别
CPU特权级别控制当前在处理器上运行的程序,对内存区域、I/O端口和特殊指令等资源的访问。客户机在以虚拟机监控器微内核更低的特权运行,而在该客户机中运行的应用程序则以更低的特权运行。这种体系结构从不可信软件组件提供了硬件级安全性。
设计安全状态
虚拟机管理器支持两种设计安全状态(Design Safe States:DSSs)。如果有内部或外部检测机制向它发出警告,指出它不打算以任何其他方式处理的情况,则虚拟机管理器将执行以下操作之一:
-
VM DSS
如果一个未定义的条件被限制在一个VM(一个承载客户机的qvm进程实例)中,那么虚拟机管理器将终止该qvm进程实例(例如,使用SIGSEGV信号)。被终止托管的qvm进程实例将终止其客户机。
-
虚拟机管理器宿主DSS(Hypervisor host DSS)
虚拟机管理器由QNX Neutrino OS和虚拟化扩展组成;因为同样的条件使得操作系统移动到其DSS的,也会导致虚拟机管理器主机移动到其DSS。
也就是说,如果未定义的条件不局限于VM,则虚拟机管理器将关闭。此DSS与QOS 2.0 DSS相同。
警告:
QNX Hypervisor 2.0不是经过安全认证的产品。不得在与安全有关的生产系统中使用。
如果希望在与安全相关的系统中运行虚拟机管理器,则必须在QNX Hypervisor的变体可用时,获得适当的QNX Hypervisor的变体。
原文链接:
http://www.qnx.com/developers/docs/7.0.0/#com.qnx.doc.hypervisor.user/topic/virt/arch.html