VxWorks实时性能探究

2023-05-16

VxWorks实时性能探究

笔者最近在使用VxWorks操作系统,由大名鼎鼎的风河(WindRiver)开发。VxWorks操作系统是一款硬实时操作系统,一直听闻其实时性能非常优秀,但是一直没有一个直观地概念。本篇文章就是将VxWorks操作系统和市面上几种其他实时操作系统的实时性能进行对比。

1、前期知识准备

实时性能和响应时间有关,为此,先对计算机操作系统中的时间概念和时间尺度进行一下介绍。

1 s = 1000 ms = 1000000 us = 1000000000 ns,看不出来1 s时间还是很长的嘛(捂脸

  • 时钟周期:主频为4 GHz的CPU的时钟周期为1/4G = 0.25 ns,时钟周期是计算机中最基本的、最小的[时间单位。在一个时钟周期内,CPU仅完成一个最基本的动作

  • CPU周期:CPU周期亦称机器周期,一条指令执行过程被划分为若干阶段,每一阶段完成所需时间。完成一个基本操作所需要的时间称为机器周期。通常用内存中读取一个指令字的最短时间来规定CPU周期。

  • 指令周期:取出并执行一条指令的时间。想要详细了解可以看这篇文章【浅析】CPU中的指令周期、CPU周期和时钟周期

  • 内存时钟周期:相比CPU,一般的DDR内存芯片速率仅为400 MHz,时钟周期达2.5 ns, 再加上总线延时,导致内存访问时间达到几十纳秒。CPU运行速率与内存访问速率比大致为100:1

  • 硬盘读取时间:硬盘的读写速度就更慢了,一般的机械硬盘的完成一次读写所需要的时间,主要取决寻道时间+旋转时间,完成一次读或者写的时间量级大致为ms级别,因此内存访问速率与磁盘存取速度比大致为1000:1

上面是有关硬件方面的时间周期情况,对于操作系统或者应用程序来说,我们一般关注的是算法的时间复杂度和空间复杂度,这是从整理理想的情况来衡量一个算法的优劣。如果想要详细了解每条代码的执行所耗时间,我们需要更深入了解代码是怎么在计算机上执行的。

C语言代码都是经过预处理、编译,产生汇编代码(汇编代码几乎已经接近机器码了),一句高级语言代码相当于汇编语言的几行甚至几十行。而学过汇编语言的都应该知道,不同的汇编代码指令执行所耗费的时间也是不同的。一般来说,移位,加法,取反这种指令只需要一个时钟周期,而乘法,除法等指令需要几个乃至几十个时钟周期执行。

2、实时操作系统(RTOS)的实时性能评价指标

实时操作系统的实时性能评价指标一般有两个:

  • 任务切换时间

    当多任务应用程序运行在操作系统上时,它把正在运行的任务的状态保存到任务自己的栈区之中,然后把下一个将要运行的任务的当前状态从该任务的栈区装入CPU的寄存器,并开始这个任务的执行,这个过程就叫做任务切换。

  • 中断响应时间

    计算机接收到中断信号到操作系统做出响应,并完成切换转入中断服务程序的时间。

下图是几种实时操作系统的实时性能对比:

在这里插入图片描述

参考文献:《4种实时操作系统实时性的分析对比》

可以看出不管是任务切换时间还是中断响应,VxWorks都是最好的,当然VxWorks也是最贵的。

此外我们还可以看出不管是任务切换还是中断响应,时间尺度都是在几个us,根据CPU主频的不同,大概是几千个时钟周期的样子。
下面代码是测试执行100万次简单循环语句所耗费的时间:

“”“

int i = 1000000;
int j = 0;
while(i){
j += 0;
i--;
}
timer = 2033 us //执行100万次该循环所耗时间,可以将执行每次的时间和任务切换的时间进行对比

“”“

本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)

VxWorks实时性能探究 的相关文章

随机推荐

  • npm相关机制解析

    你对日常使用的npm了解的有多少 xff1f 从这篇文章中能获得什么 xff1f npm的安装机制 xff0c 即在执行install命令时都做了什么事 xff1f npm的缓存策略 xff0c 这里做了简单介绍 xff0c 没深入 npm
  • 头文件中只能声明变量不能定义变量 而声明变量必须带extern,为什么头文件中变量的声明都没有加

    1 头文件中不可以放变量的定义 xff01 一般头文件中只是放变量的声明 xff0c 因为头文件要被其他文件包含 include xff0c 如果把定义放在头文件的话 xff0c 就不能避免多次定义变量 C 43 43 不允许多次定义变量
  • 四川麻将胡牌判定(Python、C#、C++)

    一下是三种判定四川麻将 xff08 血战到底 xff09 胡牌的算法 xff0c 主要思想是递归 43 回溯 Python写法 xff1a span class token comment coding utf 8 span span cl
  • 解决putty远程连接Linux拒绝访问的问题NetWork error:Connection refused

    远程连接出现拒绝访问 xff0c 一般情况是没有安装ssh 服务 xff0c 新装的系统需要自己手动安装ssh server 第一步 xff1a 检查linux系统是否安装了ssh server 在终端中输入 xff1a ssh local
  • VINS-Fusion KITTI数据集 GPS版跑通

    第一步 xff0c 打开ROS内核 首先要 进入工作空间 source catkin ws devel setup bash 然后启动内核roscore 运行启动文件 roslaunch vins vins rviz launch
  • 迭代牛顿-欧拉法——机器人动力学逆解

    迭代牛顿 欧拉法 牛顿欧拉法的步骤向外回归 xff08 outward recursion xff09 step 1step 2 向内回归 xff08 inward recursion xff09 step 3step 4 牛顿欧拉法的三种
  • ros自定义全局路径规划器并内置到ros工作空间

    ros自定义全局路径规划器并内置到ros工作空间 1 定义头文件2 类实现3 写好自己的cMakelist txt文件4 为我们的规划器写一个描述文件5 修改package xml文件6 运行catkin make进行编译 xff0c 如果
  • 从RRT到RRT*,再到Informed RRT*,路径规划算法怎么写

    从RRT到RRT xff0c 再到Informed RRT xff0c 路径规划算法怎么写 1 RRT算法1 1 假设1 2 RRT算法步骤与实现1 3 伪代码 2 RRT 算法3 Informed RRT 算法 做个正直的人 RRT中文名
  • VFH避障/局部路径规划算法

    VFH避障 局部路径规划算法 1 信度栅格 xff08 Certainty Grid xff09 2 势场法 xff08 Potential Field Methods xff09 3 VFH算法的前身 VFF xff08 Virtual
  • VFH+避障/局部路径规划算法

    VFH 43 避障 局部路径规划算法 1 第一部分 xff1a 映射到极坐标系VFH 43 对VFH的改进 考虑机器人的宽度 amp 对障碍物进行膨胀 2 第二部分 xff1a 二值化极坐标直方图VFH 43 算法对此提出了一种解决办法 二
  • 给树莓派刷入OpenWrt

    下载OpenWrt固件 进入OpenWrt官网 xff0c 进入固件列表 在选择框输入raspberry搜索树莓派的固件资源 xff0c 选择对应树莓派型号的下载链接 以3B 43 为例 xff0c 注意不支持一栏的提示 xff0c 可能产
  • VFH*避障/局部路径规划算法

    VFH 避障 局部路径规划算法 1 VFH 43 存在的问题 dead end2 VFH 算法2 1 VFH 算法概述2 1 1 VFH 的参数2 2 2 表示2 2 3 算法步骤 2 2 投影位置和方向2 3 代价函数2 3 1 k e
  • 新建ROS订阅者、发布者节点方法

    文章目录 1 新建一个该项目的工作空间 xff0c 并在其中创建一个文件夹src2 进入src文件夹 xff0c 并在其中创建一个package xff0c 运行如下命令即可3 返回上一层 xff0c 编译 xff0c 并source4 编
  • 基于光线跟踪的路径规划算法

    基于光线跟踪的路径规划算法 光线跟踪算法是我在 中国控制会议2022 上提出的一种全新的路径规划算法 这里附上论文链接 不自夸 xff0c 感兴趣的欢迎去阅读 xff0c 实现非常简单
  • ubuntu 20.04 配置cartographer 库

    ubuntu 20 04 配置cartographer 库 不要让别人占据你的大脑 一 安装Ceres 库1 安装依赖项2 下载源码3 编译源码4 安装 二 安装cartographer1 安装工具 xff1a wstool rosdep
  • 终于把前后端sm加解密以及加签验证调通了。

    终于把前后端sm加解密以及加签验证调通了 xff01 领导要求我对项目的数据传输安全考虑下 xff0c 因此就想到了对敏感字段做加密和对请求 响应做数字签名验证 网上看了很多文章 xff0c 可能是因为我对加密这块不了解 xff0c 感觉都
  • 【LeetCode】最接近原点的K个点 (优先队列PriorityQueue,快速排序的根据基准数分区思想(双指针法分区))

    LeetCode 最接近原点的K个点 xff08 优先队列PriorityQueue xff0c 快速排序根据基准数分区思想 双指针法分区 xff09 题目 xff1a 我们有一个由平面上的点组成的列表 points 需要从中找出 K 个距
  • 萌新解析正点原子悟空大四轴无人机ATKflight固件(持续更新中~)

    本博客用来记录学习ATKflight固件的学习过程 xff0c 本人萌新 xff0c 大佬们可以参考参考 本文默认已经了解FreeRTOS操作系统并且会简单的使用方法 xff0c 如果读者没了解过 xff0c 建议先看正点原子的FreeRT
  • FOC观测器之龙伯格观测器

    状态观测器 xff1a 根据控制理论 xff0c 如果一个系统能够完全通过其检测到的输出值来重构其系统状态 xff0c 则认为该系统是可观测的 其作用于无传感器转子的位置和速度的检测反馈 xff0c 再作用到PARK逆变换和转矩磁链控制上
  • VxWorks实时性能探究

    VxWorks实时性能探究 笔者最近在使用VxWorks操作系统 xff0c 由大名鼎鼎的风河 xff08 WindRiver xff09 开发 VxWorks操作系统是一款硬实时操作系统 xff0c 一直听闻其实时性能非常优秀 xff0c