Questions tagged «real-time»

实时处理是指在创建或修改数据时对其进行处理。这与批处理相反,批处理中的数据按特定间隔(例如,每晚)以大块进行处理。

4
飞机使用什么操作系统,以及使用什么编程语言开发?[关闭]
我想知道是否有人知道商用飞机使用什么操作系统(例如波音或空中客车公司)。 另外,什么是(首选)实时编程语言?我听说波音公司使用了Ada,所以我的问题是-为什么要使用Ada?波音人选择该语言的标准是什么?(我猜想Java并不是一个不错的选择,如果恰好在垃圾收集器启动时唤醒它)。



3
为什么Java / Linux堆栈无法“实时”运行的原因是什么?
我经常听到开发人员提的是Java的不能“ 做实时 ”,这意味着在Linux上运行的Java应用程序不能满足一个确定性的实时系统的要求,如对RIOT-OS等运行的东西 我试图理解为什么。我的SWAG告诉我,这可能主要是由于Java的Garbage Collector可以在任何时间运行并完全暂停系统。而且,尽管那里有所谓的“无暂停GC”,但我不一定相信他们的广告,也没有每个JVM实例$ 80K的兴趣来支持这个业余项目! 我还阅读了有关在Linux上运行无人机软件的文章。在那篇文章中,作者描述了Linux几乎导致无人机撞车的情况: 在选择在Pi上执行低级控制循环(PID)之后,我学到了很难的一课-为了变得聪明,我决定在循环的中间放置一个日志记录以进行调试-Quad最初运行良好,但随后Linux决定花2秒写一个日志条目,然后四边形几乎撞到了我的车上! 现在,尽管那个作者用C ++编写了无人机软件,但我可以想象,在Linux上运行的Java应用程序可能遭受同样的命运。 根据维基百科: 如果一个操作的总正确性不仅取决于它的逻辑正确性,还取决于它执行的时间,那么该系统就是实时的。 所以对我来说,这意味着“ 如果完全正确需要逻辑上的正确性和及时性,那么您就不会实时。 ” 假设我已经编写了一个Java应用程序以使其具有超强的性能,可以这么说,我已经“挤满了柠檬”,并且不能合理地用Java编写该程序以使其更快。 总而言之,我的问题是:我正在寻找可以向我解释所有/大多数运行Linux的Java应用程序无法成为“实时应用程序”的原因。意思是,什么使Java / Linux堆栈上的所有事物类别阻止了它“及时”,从而使其“ 完全正确 ”?如前所述,GC和Linux日志刷新似乎可以暂停执行,但是我敢肯定Java应用程序本身之外还有更多事情会导致计时/性能下降,并使其难以满足最终期限的要求。这些是什么?
20 java  linux  real-time 

3
如何在客户端/服务器实时视频游戏中处理速度更快的计算机
我正在使用socket.io创建我的第一个在线游戏,我希望它是像agar.io或diep.io这样的实时多人游戏。 但是我遇到了试图弄清楚如何使所有计算机以相同速度工作的问题。 我对模型有三个想法,但似乎都不对,我想知道普通电子游戏是如何做到的。(您可以跳过阅读我的想法;它们只是给您一种查看我遇到的问题的方法。) 服务器允许客户端自行运行,并将更新传递给服务器,然后服务器将其广播给其余的客户端。这样做的问题是,某些计算机的运行速度比其他计算机要快,因此它们的更新速度更快,并且在屏幕上的移动速度更快。 让服务器告诉客户端何时更新。然后,我可以等到最后一个客户端做出响应(如果一个人的计算机速度较慢,这是一个糟糕的主意),或者等到第一个客户端做出响应(再次,在每帧之前等待通信),或者尽可能快地发送它们(似乎遇到了与数字1相同的问题。 在游戏开始时,让服务器告诉客户端更新的速度。这意味着客户将负责限制这段时间之间的移动。例如,如果某人设法在该时间段内两次按下按钮,则只会发送一个按钮按下事件。这样做的问题是某些操作将被忽略(例如,按两次双键),并且交互将依赖于客户端的时钟,而这可能与服务器的时钟不匹配。然后,服务器将必须跟踪每个客户端,并确保在正确的时间提交其更新。 我已经进行了一些研究,但是我阅读的文章似乎并未具体说明如果客户端发送更新的速度比其他客户端快的话该怎么办。 在我的特定情况下,我正在与键盘速度更快的人打交道(他们的计算机比其他计算机发送更多的键盘更新)。 程序员通常如何处理呢?


2
RTOS与Bare Metal在MCU编程方面的优势?
请注意:这个问题专门提到了两个RTOS,但更为通用,以前曾为嵌入式RTOS编写过C代码并且直接在MCU上运行其软件的任何人都可以回答。 我有兴趣了解有关嵌入式RTOS的更多信息并为其编写应用程序。我目前正在查看Embox和RIOT,因为它们是开源的,现代的,活跃的并且似乎有出色的文档。我的目标分为两个阶段:第一阶段是弄清楚如何将这些OS编译并刷新到MCU(可能是AVR或ARM)。然后,第2阶段将编写一个简单的C程序(基本上是一个无头的守护程序),该程序会随着时间的流逝而发展为“业余应用程序”。然后,我将该程序刷新/部署到同一MCU,从而成功部署了一个由Embox / RIOT和位于其之上的应用程序组成的应用程序堆栈。 在走上任何最终导致死胡同的道路之前,我偶然发现了这篇文章,很好地解释了为什么用C /汇编器编写并闪存到MCU的实时应用程序真正不需要它们下面的RTOS。 。 所以现在我真的很困惑,并且质疑我对计算理论的一些基本理解。我想我想首先决定是否使用Embox / RIOT,或者: 保持进度,并在两个OS +应用程序的MCU上使用“应用程序堆栈”;要么 请留意本文的警告,并选择运行我的应用程序“裸机”的MCU 显然,前者需要做更多的工作,因此最好还是有一个很好的理由/选择那条路线。因此,我想问:这些(和类似的)嵌入式RTOS为MCU / C应用程序开发人员提供的真正好处是什么?使用RTOS,我的C应用程序可以从哪些特定功能中受益(也许不重新发明轮子?)?抛弃RTOS并裸机失去了什么? 我在这里要求具体的例子,而不是当您进入RTOS的Wikipedia条目时获得的媒体宣传;-)

6
实时协作中如何保存
我希望多个用户编辑同一文档。我面临的问题是,当新用户加入时,他可能会看到过时的文档。如何确保新用户获得最新更改? 我想到的一些解决方案: 保存所有更改。我不喜欢这种解决方案,因为它会减慢UI速度并增加db的负载。 当新用户加入时,触发所有其他客户端上的保存。保存其他客户端后,加载文档。与此可能仍然存在不一致。 任何其他建议都会有所帮助。 更新:在研究了建议的解决方案Google Realtime API之后,我发现: 您的应用程序用户必须具有Google云端硬盘,并允许您访问其驱动器。这最多可能会导致尴尬的UI流程,或阻止没有Google云端硬盘的用户使用实时功能。 必须将您完成的所有共享设置复制到Google文档中。 更新2:为达到目标,我选择了Google的Firebase

3
如何将软件修改为实时?[关闭]
已关闭。这个问题需要更加集中。它当前不接受答案。 想改善这个问题吗?更新问题,使其仅通过编辑此帖子来关注一个问题。 3年前关闭。 首先,我想提到我是实时系统编程的新手,这就是为什么我不确定我的问题是否正确的原因。抱歉,我需要一些帮助 简而言之,问题是: 如何实施硬实时软件以确保其在硬期限内完成?是否有必要使用某些QNX功能?还是足以为Linux编写它,移植到QNX并默认为实时? 完整问题: 我们已经针对Linux,Windows,Android和QNX实现了一些具有进程间通信的复杂跨平台多进程软件。编程语言是C ++,我们使用Boost和其他库的planty。我们的软件可以很好且快速地完成工作,但它仍是原型。出于生产目的,我们需要实时进行操作,因为某些功能非常重要,因此某些功能必须实时且非常可靠,并且使用我们软件的人员的安全性可能取决于这些功能。它们的工作速度非常快-高达数百毫秒。但是由于这个事实,我不确定我们的系统是否是实时的(我对吗?)。 因此,存在一个主要问题:如何将我们的软件修改为实时的?我已经用谷歌搜索了很多,但是我仍然不知道该怎么做。 有关平台的一些其他信息:Linux和Windows,我们目前仅用于测试目的。Android-我们仍未决定是否需要它。QNX-是我们生产的目标操作系统。我想我的下一个问题的答案是“否” :)但是,是否有可能实施跨平台的实时软件(用于实时OS(RTOS)以及用于通用OS(GPOS))? 可能我们需要努力只为QNX实施所有实时功能吗?但是我还是不知道该怎么做。有人可以阐明这个问题吗?
9 c++  real-time 
By using our site, you acknowledge that you have read and understand our Cookie Policy and Privacy Policy.
Licensed under cc by-sa 3.0 with attribution required.