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

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

在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

QNX Hypervisor —— 物理设备相关推荐

  1. QNX Hypervisor管理程序

    QNX Hypervisor管理程序 借助 QNX® 管理程序,可以将具有不同操作系统,不同可靠性和安全要求的多个嵌入式系统,整合到单个片上系统 (SoC) 中.可以轻松地将未修改的代码移动到最新的硬 ...

  2. [QNX Hypervisor 2.2用户手册]12.2 术语(二)

    专栏目录​​​​​​​ IOMMU - 输入输出内存管理单元 输入输出内存管理单元(Input/Output 内存管理单元).一个内存管理单元(MMU)将支持的DMA I/O总线连接到主存.就像传统的 ...

  3. QNX Hypervisor —— 虚拟机

    一个正在运行的虚拟机管理器包括虚拟机管理器微内核及其虚拟化库(libmod_qvm.a)和一个或多个虚拟机进程实例(qvm). 什么是虚拟机? 在QNX Hypervisor环境中,每个虚拟机(VM) ...

  4. [QNX Hypervisor 2.2用户手册]10.4 vdev hpet

    [QNX Hypervisor 2.2用户手册]专栏目录导航 为guest提供HPET设备. 一,语法 vdev hpet options 二,选项 2.1 frequency value 使用给定的 ...

  5. 05-SA8155 QNX Hypervisor 之 Pass-through直通模式

    1. 背景 为了提高效率,QVM虚拟机运行系统想直接操作I2C硬件层,这个时候可以采用QNX Hypervisor 的Pass-through模式,将硬件IO设置为直通模式. QNX 原图 下图为理解 ...

  6. 【QNX Hypervisor 2.2用户手册】目录(完结)

    写在前面 为什么要翻译QNX Hypervisor 2.2用户手册手册? 首先Q+X是目前SOC或座舱系统主流的方案.QNX是目前使用最广而且最稳定的方案之一,毕竟车厂和广大的用户的眼睛是雪亮的,况且 ...

  7. QNX Hypervisor —— 时间

    运行在QNX Hypervisor上的客户机的时间,总是滞后于宿主机上的时间,但是虚拟机管理器会采取纠正措施来最小化这种偏差. 漂移 对于虚拟机管理器系统中的客户机来说,时间是虚拟化的.也就是说,托管 ...

  8. 【QNX Hypervisor 2.2 用户手册】4.5.1 构建QNX Guest

    写在前面 就像构建直接运行在硬件上的QNX OS系统一样,一个QNX OS系统可以构建为一个Guset使用BSP在一个QNX Hypervisor环境上运行.BSP是特定于架构的组件. qmv配置将会 ...

  9. QNX操作系统和QNX Hypervisor简介

    概述 QNX操作系统和QNX Hypervisor是由QNX Software Systems开发的两个重要的嵌入式技术.它们在嵌入式系统领域具有广泛的应用和卓越的表现. QNX OS是一个实时操作系 ...

  10. 【QNX Hypervisor 2.2 用户手册】4.1 构建QNX Hypervisor系统的方法

    构建一个QNX Hypervisor系统需要把虚拟化添加到QNX Neutrino微内核系统中. 这样做有两种方法: 1.如果你已经启动了非虚拟化的QNX Neutrino目标系统,参考"B ...

最新文章

  1. python不能创建新变量_Python之变量的创建过程!
  2. 物资管理信息系统5 -- 删除用户界面
  3. python集合例题_python基础练习题、集合的讲解、一些公关方法
  4. python培训比较好的机构-学Python哪个机构好?老男孩Python培训班
  5. 华为安卓11是鸿蒙系统吗,恭喜华为手机,EMUI11曝光,是披着Android 11的“鸿蒙系统”?...
  6. REST framework 基本使用
  7. 腾讯首个软硬件全自研的机器狗 Max 来了!
  8. 编程基本功:有了范例代码,怎么办?
  9. 使用EasyNetQ组件操作RabbitMQ消息队列服务
  10. OpenBSD基金会收到锤子科技约140万捐赠款
  11. C++ 查看输入流中的下一个字符
  12. 数据科学与计算机学院张治国,张治国(河海大学机电工程学院副教授)_百度百科...
  13. GPU并行计算OpenCL(3)——图像处理
  14. __init__.py的作用是什么?
  15. python核心编程第三版课后习题一
  16. 解决Unable to find taglib [cr] for URI: [WBE-INF/tlds/testlib.tld]] with root cause的可能性方案
  17. 质量值体系 Phred33 和 Phred 64 的由来 及其在质量控制中的实际影响
  18. java使用aspose-words组件word转换图片
  19. 全国计算机四级数据库工程师考试真题及答案(Word版)
  20. VMware Workstation Pro 15安装和Win 10虚拟机安装

热门文章

  1. @guardedby同步注解
  2. ubuntu无法关机,卡在黑屏界面
  3. 数学建模学习(47):灰色预测模型案例一(代码模板+模型建立)
  4. Xftp的下载和安装(超详细)
  5. 新华三:照耀城市的数字演进之路
  6. 解析 URP 教务系统, 创建查成绩 APP !
  7. 解决idea项目中没有蓝色方块
  8. 机会总是留给有准备的人 —— 从裁缝到码农
  9. ie11浏览器For win7 x64 官方下载 V9600 官方版
  10. 使用AhMyth入侵Android智能手机