QNX Hypervisor —— 物理设备

物理设备可以是虚拟化管理器宿主机或客户机独占使用,也可以是共享的。

物理设备(或简单设备)在虚拟化环境中,与在非虚拟化环境中完全相同。它们需要驱动程序,它们假定有中断并接收信号,等等。

在QNX虚拟化环境中运行的客户机,可能会直接访问物理设备,或者透过虚拟设备访问,或者被禁止访问这个设备。对物理设备的访问权,是由虚拟化环境配置来控制的。一个物理设备可以被配置为:

  • 指定客户机独占使用(参见“透传设备”)

  • 客户机间共享使用;不是所有的设备都能共享(参见“共享设备”)

透传设备

在虚拟机管理器系统中,透传设备是客户机可以直接且独占访问的物理设备。这种方式对物理设备的访问是直接且独占的,可能比透过虚拟设备访问、或者与其它客户机或虚拟机宿主机共享访问,要快一些。

要使用透传设备,客户机必须有自己的对物理设备的驱动。而在托管客户机的qvm进程中不需要vdev,虚拟机管理器自身也不需要相关的驱动程序。

对于透传设备,虚拟机管理器宿主机域只知道它必须将中断从物理设备直接路由到客户机,并将信号从客户机直接传递到设备。所有的交互都是在客户和设备之间进行的;虚拟机管理器的唯一职责是识别并允许通过来自设备的中断和来自客户机的信号。

在启动客户机之前,对于托管客户机的VM而言,必须先在*.qvmconf文件中配置好透传设备。(请参阅“配置”章节中的“配置透传”)。

注意:

在任何时候,虚拟系统中只有一个驻留者被允许访问透传设备。如果宿主机拥有客户机作为透传设备所需的设备,则宿主机必须终止设备驱动程序,然后客户机才能在其虚拟环境中启动设备的驱动程序。

类似地,如果一个客户机拥有一个作为透传设备的设备,那么在另一个客户机可以在其空间中使用该设备之前,它必须在其虚拟空间中终止该设备驱动程序。

简而言之,永远不要为多个客户机配置相同的透传设备(请参阅“配置透传”)。

处理复杂设备的透传

有些设备(例如音频和视频设备)由多个硬件接口组成,需要非常特殊的配置才能正确运行。

如果一个有知识的系统设计人员了解并理解如何使用所有设备接口,并且能够在VM定义中正确定义它们,那么他应该能够使任何复杂的设备作为透传设备在QNX Hypervisor系统中的正常工作。

请联系QNX客服了解更多关于客户机之间共享复杂设备的信息。

共享设备

在虚拟机管理器系统中,共享设备是可以由一个或多个客户机和虚拟机管理器本身使用的物理硬件设备。设备共享有几种方法(例如VirtIO)和模型,包括:

  • 引用共享(referred sharing)

  • 中介共享(mediated sharing)

虚拟机管理器提供了TCP/IP、共享内存和虚拟队列(virtqueue)等服务,您可以使用这些服务来做设备共享。您要实现的服务和虚拟机管理器配置将取决于您的系统的需求。

提示:

QNX Hypervisor支持共享音频和图形物理设备的虚拟设备(vdev)。更多的信息,请联系您的QNX代表。

引用共享(Referred sharing)

在引用共享模型中,将要共享的物理设备分配给某个客户机,该客户机完全控制该设备。如果将该物理设备作为透传设备访问,则该客户机需要物理设备的驱动程序(请参阅上面的“透传设备”)。如果通过虚拟设备访问该物理设备,托管该客户机的qvm进程必须拥有适当的虚拟设备(请参阅下面的“虚拟设备”),并且客户机和虚拟机管理器都要有适当的设备驱动程序,分别是虚拟化设备(客户机)和实际物理设备(虚拟机管理器)。

其它需要访问物理设备的客户机,使用TCP或共享内存和虚拟队列(virtqueue)等机制与控制设备的客户机通信,并根据需要传递数据。

例如,假设有两个客户机在虚拟机管理器系统上运行。Guest 0是与QNX安全相关的客户机,而Guest 1是普通的Linux OS客户机,没有安全需求。它们都需要访问一个设备来输出音频:Guest 0发出警告声音,Guest 1播放音乐。

我们将音频设备作为透传设备分配给Guest 0。托管Guest 1的VM的qvm进程中的音频虚拟设备,被设计为与另一个qvm进程中的虚拟设备共享数据,并且它被配置为知道上述另一个虚拟设备位于托管Guest 0的VM的qvm进程中。使用这样的虚拟机管理器配置,所有针对Guest 1的音频设备活动都将被引用到Guest 0进行处理。

当Guest 0的qvm进程中的虚拟设备接收到针对Guest 1的中断和数据时,会将它们传递给Guest 1的qvm中的虚拟设备;当Guest 1的qvm进程中的虚拟设备接收来自Guest 1的音频设备的信号和数据时,它将这些信号和数据传递给Guest 0,以传递给它的音频设备驱动程序,并最终传递给物理音频设备。

因为Guest 0控制了所有输入和输出的音频设备,它可以设置优先级,以确保与安全相关的进程和线程优先于普通的操作系统及其应用程序的输入和输出,甚至拒绝配合与其它客户机或设备的合作,如果合作可能会危及自身的与安全相关的活动。

中介共享(Mediated sharing)

中介共享模型类似于引用共享模型,不同点在于中介共享模型中,是虚拟机管理器宿主机而不是客户机来承担对物理设备的控制接口的责任,并确保配置的优先级得到遵守。

使用这个模型,要共享的设备被分配给虚拟机管理器本身。qvm进程中的虚拟设备作为每个VM连接到虚拟机管理器的中介。该中介确定哪些中断和数据从物理设备传递给客户机,以及哪些信号和数据从客户机传递给虚拟机管理器中的设备驱动程序,最终传递给物理设备。

该中介还确保所配置的优先级得到遵守(例如,确保优先执行与安全相关的活动),甚至拒绝与客户机或设备合作,如果客户机或设备的活动可能对系统上的其它客户机或虚拟机管理器本身有害。

提示:

中介进程并不是必须驻留在虚拟机管理器宿主机中。它们也可以驻留在某个客户机中。但是,请注意,使用这种设计时,客户机失败将导致中介共享的未定义行为。

原文链接:

http://www.qnx.com/developers/docs/7.0.0/#com.qnx.doc.hypervisor.user/topic/virt/pdevs.html

  • 0
    点赞
  • 3
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值