【问题标题】:Why are real time systems concurrent?为什么实时系统是并发的?
【发布时间】:2012-05-09 03:36:03
【问题描述】:

是不是因为实时系统上的时间限制意味着线程或任务应该根据时间来控制自己的执行,而顺序执行的程序可能由于其任务负载而无法保证达到时间?

问候,谢谢。

【问题讨论】:

  • 实际上有很多实时系统(然后我假设我们在谈论硬 rt 保证?)在小型嵌入式设备上运行,即使是多个线程的概念也不存在。所以你的假设一开始是错误的:)
  • 当系统控制时间敏感的外部进程并对不可预测的外部输入做出反应时,它不能总是在响应或倾向于另一项任务之前等待完成任务。它有时必须同时处理两个或更多任务。
  • 同意@Voo,我曾经编写不使用进程、不使用线程、依赖中断和合作多任务处理的 rt 代码。我认为该代码是并发的。我们今天所说的并发是什么意思?
  • 这是我有点迷茫的地方,我在讲座中读到实时系统本质上是并发的,就像现实世界的模型一样。这句话让我很困惑
  • @MikeHoward 这就是我在第一条评论中想要表达的意思。现实世界不会等待。如果您在阅读论文时茶壶沸腾了,您可能会在倒水时短暂中断阅读,但您会从中断的地方继续阅读。这就是合作多任务处理。如果你是一个真正的多任务处理者,你可能会一边倒一边继续阅读!!这有点像一个多核 cpu 同时运行两个线程。

标签: java multithreading time concurrency real-time


【解决方案1】:

您可以编写一个只有一个线程的实时系统,因此它不必是并发的。

在实时系统中使用线程可以有所帮助,但它们可能会引入自己的问题。

也许您将实时与并发联系起来,因为您必须更加了解每个线程在做什么。

【讨论】:

    【解决方案2】:

    我喜欢彼得的回答,但我想详细说明一下。

    作为实时系统一部分的外生物理设备(即与实时软件和计算机交互的部分)可能具有任意数量的并发性,从无到无。实时系统本质上不是并发的,但在某种程度上,即使不是大多数,也有很多。

    不管外生部分有多少并发,实时软件通常可以有任意数量的并发,从没有(所谓的“主线程”彼得提到)到尽可能多的可调度线程/任务/等等。被认为是适当的。

    正如 Peter 所指出的,软件中的并发性越多,并发控制就越复杂和困难。这通常是正确的,并且由于时间限制在实时软件中更加严重。一些著名的软件科学家声称,人类的思维并不适合管理任何事物的高度异步并发。

    Edward Lee 是对并发线程最直言不讳的批评者之一,正如这份技术报告“线程的麻烦”www.eecs.berkeley.edu/Pubs/TechRpts/2006/EECS-2006-1.pdf 中所清楚记录的那样。

    【讨论】:

    • 几年前我读过“线程的麻烦”。当我阅读这份报告时,我对分解过于依赖锁定的幼稚线程实现并没有留下太深刻的印象,即使至少提到了演员、消息传递、erlang 等。然而,当我得出结论时,我只是......好吧,言语让我失望。 “确定性的目的应该通过确定性的手段来实现”。我们的桌面系统是混乱的,有时会产生一个中断。 I/O 中断以近乎混乱的顺序到达,使线程准备就绪。线程的问题是别无选择。
    【解决方案3】:

    并发实时,正如其他人发布的那样。

    由于良好的 IO 性能,实时系统倾向于使用抢占式调度程序。协作或不存在的调度仅适用于延迟和整体 IO 性能不重要的应用程序 - 将它们排除在许多/大多数“实时”任务之外。

    是否真正使用了“真正的”并发,即。多核,另当别论。

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 1970-01-01
      • 2020-10-02
      • 1970-01-01
      • 2011-06-28
      • 2014-04-10
      • 1970-01-01
      • 1970-01-01
      • 2021-07-06
      相关资源
      最近更新 更多