运行在QNX Hypervisor上的客户机的时间,总是滞后于宿主机上的时间,但是虚拟机管理器会采取纠正措施来最小化这种偏差。

漂移

对于虚拟机管理器系统中的客户机来说,时间是虚拟化的。也就是说,托管客户机的VM (qvm进程实例)提供了虚拟计时器滴答(timer tick),并虚拟出客户机希望在其环境中看到的硬件计时器。因此,虚拟机管理器宿主机控制着其客户机看到的时钟。在客户机退出的期间,虚拟机管理器宿主机对客户机的时钟的操作方式,对客户机有着显著影响,特别是对于客户机的时间预算。当客户机退出后,虚拟机管理器宿主机可以让客户机时钟维持运转,也可以停止客户机时钟。而这两种选择都不理想。

客户机时钟在退出期间维持运转

如果虚拟机管理器允许客户机的时钟运转,使客户机时钟与宿主机时钟保持同步,那么两者的差别只在于偏移量,也即从宿主机开始计算时间到客户机开始计算时间之间所经过的时间。(请参阅下面的“偏移量”)

然而,允许时钟运转会扭曲客户机的时间计算,因为从客户机退出到重新进入期间的时间,被追加到客户机中请求退出的那个任务所花费的时间中。例如,任务可能会耗尽时间预算并被抢占,除了退出之外实际上也做不了什么。

客户机时钟在退出期间停止

当客户机退出时停止客户机的时钟,解决了客户机退出期间偏离时间预算的问题。当客户机退出时,客户机时钟将停止,直到客户机重新进入,并且客户机只记录实际运行在任务时间预算的时间。然而,随着每次客户机退出时停止客户机的时钟,客户机的时钟将越来越落后于宿主机的时钟。这种滞后被称为漂移。

随着每次客户机退出,漂移逐步增加。如果允许漂移未经纠正地增加,客户机很快就会遇到可能阻止其按要求行事的情况:客户机可能会错过计时器中断,一天中的时间将越来越不准确,等等。

跳过

为了让客户机合理地控制其时间预算,QNX Hypervisor在每次客户机退出时停止客户机的时钟,并在客户机进入时重新启动它(请参阅“体系结构”中的Lahav行)。然而,为了减轻漂移的影响并避免未纠正的漂移最终导致的问题,QNX Hypervisor会周期性地让客户机中的时间向前跳过;也就是说,它将当前漂移时间的一部分,追加到客户机的时间中。

虚拟机管理器只跳过客户机和主机之间延迟的一部分,因为向前跳过客户机中的时间,会扭曲客户机的时间计算。

例如,考虑一个比主机慢10微秒的客户机。这个客户现在正在运行foo。如果虚拟机管理器跳过了整个10微秒的客户机时间,而这10微秒(foo没有使用)仍然会被填充到foo,因为从foo开始到结束的时间间隔包括跳过的10微秒。因此,虚拟机管理器只跳过客户时间漂移的一部分,以便在客户机的活动中更平均地分配跳过时间。

如果您在您的客户机身上实施了任何类型的时间预算,您应该考虑漂移和纠正跳过对这些预算的影响。特别要记住:

  • 只有当客户机退出了所有的vCPU时,才可以跳过;这意味着跳过必须以不规则的间隔发生。

  • 虚拟机管理器主机会在必须这样做的每一个机会上跳过客户机的时间。

  • 虚拟机管理器主机只跳过当前漂移的一部分。

  • 总会有一些漂移,而这种漂移会随着客户机的生命周期而变化。

有关如何检索客户当前时间漂移的信息,请参阅“监视、故障排除和调优”一章中的“查找当前时间漂移”。

偏移

客户机只能在宿主机启动之后才能启动,因此客户机开始计算时间的时间必然比它的宿主机要晚(在虚拟机管理器系统之外测量)。这种差异是一种偏移,它与漂移的联系只是因为它与时间相关。

原文链接:

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

QNX Hypervisor —— 时间相关推荐

  1. QNX Hypervisor管理程序

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

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

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

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

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

  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 —— 虚拟机

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

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

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

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

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

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

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

最新文章

  1. bootstrap 文件上传fileinput
  2. SecureCRT从Windows中上传文件lrzsz工具
  3. docker-machine为节点安装指定版本的docker-ce的思路
  4. 台湾大学林轩田机器学习基石课程学习笔记12 -- Nonlinear Transformation
  5. python多维数据post给php_使用Python中的POST将数据发送到PHP
  6. 天津大学推出大型无人机航拍车辆数据集DroneVehicle
  7. python旋转排序数组_33.leetcode题目讲解(Python):搜索旋转排序数组
  8. Android(java)学习笔记51:ScrollView用法
  9. QQ音乐.qmc3文件转换成正常mp3文件
  10. ArcGIS模型构建器计算几何的方法
  11. MySQL Workbench main_menu.xml 文件 可直接粘贴(下)
  12. Cesium-Camera-flyto详解
  13. 【转】大河报重要版面刊登署名永春文章:观猴有感 原始社会平均分配食物的问题 关于母系社会问题 关于人与动物关系的问题...
  14. 基于OpenGL的3D天空仿真
  15. 适合所有手环的app_一只手环就能指导运动?Keep 想做你手腕上的魔鬼教练
  16. jkd8新特性 StreamAPi流
  17. 大热的DevOps,和软件测试的关系竟然是什么呢?
  18. 功利主义穆勒思维导图_约翰·穆勒功利主义教育思想概述
  19. ios nslog 例子_iOS Runtime常用示例总结
  20. GEE:快速下载中国2015年到2019年土地利用/覆盖数据(100米分辨率)

热门文章

  1. Redis IO 多路复用机制
  2. java se6.0_JDK 1.4用户依然固守 JavaSE6.0大幅攀升
  3. pta画菱形(C语言实现)
  4. 超详细C语言版数据结构:图的深度优先遍历(推荐收藏)
  5. 第十二届蓝桥杯单片机省赛客观题
  6. linux 数据包复制,请问在LINUX下是如何判断数据包属于同一条连接的--
  7. STC52单片机简单控制直流电机正反转(已验证)
  8. 2021-03-02低轨卫星定轨流程整理学习02
  9. 关于 win8.1 激活问题
  10. 全面了解 Python 中的反斜杆