Loading [MathJax]/jax/output/CommonHTML/config.js
社区首页 >问答首页 >如何修改软件成为实时的?

如何修改软件成为实时的?
EN

Software Engineering用户
提问于 2017-01-05 02:16:57
回答 3查看 7.4K关注 0票数 9

首先,我想提到我是实时系统编程的新手,这就是为什么我不确定我的问题是否正确。很抱歉,但我需要帮助

简单地说:如何实现硬实时软件以确保其符合硬截止日期?是否有必要使用一些QNX特性?或者仅仅为linux编写它,移植到QNX,默认情况下它将是实时的?

完整的问题:我们已经实现了一些复杂的跨平台多进程软件,包括Linux、Windows、Android和QNX的进程间通信。编程语言是C++,我们使用其他语言的Boost和planty。我们的软件做的很好和迅速,但它仍然是原型。为了生产目的,我们需要实时地做一些特性,因为它们是非常重要的,并且使用我们软件的人的安全可能依赖于它们。它们的工作速度相当快--高达几百毫秒。但由于这个事实,我不确定我们的系统是否是实时的(我说得对吗?)

因此,有一个主要的问题:如何修改我们的软件成为实时的?我搜索了很多,但我还是不知道该怎么做。

关于我们的平台的一些附加信息: Linux和Windows,我们目前只用于测试目的。Android -我们还没有决定是否需要它。QNX -是我们生产的目标操作系统。我想我下一个问题的答案是“否”:)但是是否有可能实现跨平台实时软件(用于实时操作系统( OSes )以及通用OSes (GPOS) )?

我们是否需要只为QNX实现所有的实时功能?但我还是不知道该怎么做。有人能解释一下这个问题吗?

EN

回答 3

Software Engineering用户

发布于 2017-01-05 02:47:18

快速并不意味着实时,实时并不意味着快速。

实时意味着交付结果的日期与其价值一样重要。换句话说,如果结果有一个正确的价值,但交付太早或太晚,那么总体结果是错误的。

举个例子,想想一个视频播放器。如果视频帧不能以正确的速度显示,用户就不会满意。更糟的是,如果图像和声音不同步。

这个例子表明,一些实时应用程序可以在当前通用的OSes上实现.

但是硬实时和软实时在截止日期错过的后果上是有区别的:在软实时系统中,这只是一种烦恼或退化的服务(在视频播放器的例子中想一想几秒钟内冻结的图像),而在硬实时系统中(例如在核电站),这是一个(潜在的灾难性的)故障。

票数 38
EN

Software Engineering用户

发布于 2017-01-05 03:44:21

正如@mouviciel已经说过的,实时和快速实际上是两个独立的属性,尽管许多实时截止日期意味着需要相对快速的响应。

在编写实时软件时,除了正确的响应之外,最重要的属性是您可以准确地预测响应的速度。对于硬实时功能,您甚至必须能够保证,在所有可能的条件下,除非完全停电,最后期限将得到满足。

不可预测性的典型来源可在

  • 动态内存分配和垃圾收集
  • (较高优先级)中断
  • 操作系统中的调度程序
  • 对象的动态创建和销毁
  • 大量有条件执行的代码

我并不是说你必须避免那些领域(因为你很可能不能),但你必须意识到它们会如何影响你可以很容易地预测你会满足相关特性的实时截止日期。

票数 15
EN

Software Engineering用户

发布于 2017-01-05 07:04:07

我想对实时的两句解释是,实时系统的设计是为了理解和控制从输入变化到输出变化的最坏情况下的响应时间。

这需要一个涵盖整个系统的分析。假设您有一个由USB键盘和制动器伺服组成的简单系统。用这个系统你能达到什么反应能力?你可能不得不考虑:

  • 输入轮询频率,以及这需要多长时间
  • 输入中断延迟
  • 一旦有输入事件,操作系统上下文切换时间
  • 操作系统任务的优先排序
  • 避免在程序中使用动态分配或虚拟内存,以避免不可预测的响应延迟或OOM事件。
  • 避免使用垃圾收集
  • 避免使用O(n)或使用高或不可预测的N的更糟的算法(是否将一个非常大的播放列表加载到您的汽车娱乐系统中,减慢其制动响应?)
  • 考虑磁盘或网络延迟(例如在cars中使用CAN总线)
  • 输出控制延迟

在这种环境中,通常也会特别考虑可靠性,例如MISRA C标准。

票数 8
EN
页面原文内容由Software Engineering提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://softwareengineering.stackexchange.com/questions/339473

复制
相关文章
paste和paste0的区别
--- title: "paste和paste0的区别" output: html_document date: "2023-03-08" --- 首先查看paste()或paste0()函数的帮助文
小叮当aka
2023/03/17
9070
paste和paste0的区别
从帮助文档看,paste和paste0只有< sep = " " >这一个参数有区别
用户10331357
2023/02/07
7720
FatFs检测并建立多层目录并更改文件名
FatFs检测文件路径是否存在,不存在就建立多层目录,最后更改文件名 if(W_Dresult==FR_OK) { wifi_dp_wav_file_status=0; start_downloading=0; /*************************************遍历创建文件夹*************************************************************/ u8 opendir_err = 0; /
小锋学长生活大爆炸
2020/08/13
1.8K0
paste命令
按列合并/tmp/file1.txt与/tmp/file2.txt文件,并追加到/tmp/file3.txt。
WindRunnerMax
2020/08/27
7760
如何使用PasteMonitor自动收集每天的Paste
PasteMonitor是一款针对Pastebin的数据爬取工具,该工具可以通过爬取Pastebin API来收集站点上用户每天发布的Paste。除此之外,广大研究人员还可以通过设置字典来爬取与关键词匹配的Paste内容。
FB客服
2022/06/08
6990
如何使用PasteMonitor自动收集每天的Paste
Flash: Event.PASTE Flash获取剪贴板内容 触发paste事件 how to get paste event
actionscript把文字存放到剪贴板这个就非常简单了,一般网站做点击复制基本都是这么做的。 但是,基本没有人做flash粘贴内容。今天本来想尝试一下,通过flash实现网页编辑器粘贴图片,但貌似行不通。。。 当运行Clipboard.generalClipboard.getData的时候,肯定会碰到报错,说只能在PASTE事件中调用。那么,paste事件到底在哪里?一般TextField不会触发,有人说TLFTextField可以触发,另外,以下的方式更直接一些。 但是,无论如何,swf还是无法获取到
用户1258909
2018/07/05
1K0
Python Paste 学习笔记
这篇文章主要介绍了Python的Paste库的使用,学习过程中主要参考官网文档以及自己的理解,整理成笔记以便后续自己查阅。 如果转载,请保留作者信息。 邮箱地址:jpzhang.ht@gmail.com Python Paste:http://pythonpaste.org/
py3study
2020/01/06
2.4K0
前端下载文件并设置文件名字
data 是接口地址 if (!data) { return; } let blob = new Blob([data], { type: "application/vnd.openxmlformats-officedocument.wordprocessingml.document;charset=utf-8" }); let url = window.URL.createObjectURL(blob
用户4344670
2020/05/26
2.9K0
JS获取图片URL并截取文件名和后缀
最近在改一个之前别人对接项目,遇到一个问题。现在要解决问题,需要获取图片的链接,并把链接中的(图片)文件名提取出来。下面开始:
德顺
2023/08/25
7070
JS获取图片URL并截取文件名和后缀
最近在改一个之前别人对接项目,遇到一个问题。现在要解决问题,需要获取图片的链接,并把链接中的(图片)文件名提取出来。下面开始:
德顺
2020/08/11
11.4K0
小程序文件下载并保存文件名打开
盼星星,盼月亮,终于盼来了微信小程序SaveFile接口的调整,以前10M限制的时代一去不复返了。
Kindear
2020/10/19
5K1
论怎么黏在一起-R(paste|paste0)|Excel(concatenate)
Excel里的一系列已经写好的函数,用起来之后,会不禁感叹,那么长一段时间,我们真的是暴殄天物了!!!
生信技能树
2019/05/24
8120
【随笔】关于算法竞赛中使用文件输入输出和文件名的规定等问题
算法竞赛对文件名有着严格的规定,包括程序名和输入输出文件名,不要使用绝对路径或者相对路径。
马三小伙儿
2018/09/12
8730
Linux命令(43)——paste命令
paste命令将多个文件的相应行默认以Tab分隔符横向连接起来,输出到标准输出。paste后可接多个文件,不限于2个文件。如果文件写成“-”,表示内容来自标准输入。paste相对于join来说,简单许多,不需要有相同的字段才能按行连接。
恋喵大鲤鱼
2018/08/03
1.3K0
JavaScript 下载文件并保持原文件名称
注:此代码只是个人根据当时的环境满足了当时的需求,记录下来用做后续参考!如有问题,请检查软硬件环境是否一致,由于时间精力有限,大部分未做详细环境描述。
全栈程序员站长
2022/09/06
7620
Python:监控键盘输入、鼠标操作,并
  使用pyhook模块可以很快地完成键盘及鼠标事件捕获,本来想使用python的logging模块,但测试时发现,因为鼠标事件频率太高,导致写时报I/O错误的异常,所以使用了自己写文件记录日志的方式。
py3study
2020/01/06
2K0
grep、awk、paste命令应用 原
注: 在awk中使用脱义字符‘\’是起不到作用的,如果想打印特殊字符,只能使用 '""' 这样的组合才可以。 这里自左至右为单引号、双引号、双引号、单引号其中两个单引号为一对,两个双引号为一对。想脱义$那就是'"$"'。
阿dai学长
2019/04/03
7850
点击加载更多

相似问题

SQL查询以获取最新价格

1011

根据日期获取最新价格的SQL查询

21

如何在sql查询中获取最新价格

20

SQL查询仅获取父目录

369

SQL查询价格检索

13
添加站长 进交流群

领取专属 10元无门槛券

AI混元助手 在线答疑

扫码加入开发者社群
关注 腾讯云开发者公众号

洞察 腾讯核心技术

剖析业界实践案例

扫码关注腾讯云开发者公众号
领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档