【问题标题】:Is this algorithm an existing real-time system algorithm?这个算法是现有的实时系统算法吗?
【发布时间】:2010-12-09 14:56:44
【问题描述】:

我开发了一种调度算法,可以提供概率性软实时保证,但它似乎太明显太简单了,不够新颖。尽管将其与已发布的实时调度算法(EDF、零星服务器等)联系起来,但我遇到了困难。下面的调度算法是已知的实时算法吗?

假设:

  • 所有任务都来自一个分布,其中 X 百分比的任务需要少于 R 个 CPU 秒数
  • 所有任务都有相同的截止日期。如果一个任务花费的时间超过 T 秒,那么它就是该任务的失败
  • 任务到达由已知的最小到达间隔时间分隔,MIN_INTER_ARRIVE_T
  • 调度器有一个任务集,在任何时候最多可以容纳H个任务(在每个时间步,任务集中的所有任务通过平均共享CPU来获得相同的进度)
  • 任务不能相互影响

保证:

  • (1) 如果 X 百分比的任务需要的 CPU 秒数少于 R 并且 (2) R = T/H,那么至少 X 百分比的任务将在 T 内完成秒

算法:

  • 如果任务到达并且任务集已满,则驱逐占用 CPU 最多的任务。这些假设保证这样的任务将至少使用 R cpu-seconds。因此,唯一可以被驱逐的任务将是无论如何都是失败的任务。任何需要少于 R cpu 秒的任务都会按时完成。

【问题讨论】:

  • 第二个假设在现实生活中似乎存在问题:“•所有任务都有相同的截止日期。如果一个任务花费的时间超过 T 秒,那么它就是该任务的失败”。在真实的计算环境中,有很多任务不遵守这个假设。
  • 在一些现实世界的系统中,这种假设是现实的。我有兴趣将此调度程序应用于每个任务都是 Web 请求的 Web 服务器。在这种情况下,假设所有 Web 请求都具有相同的截止日期(比如 10 秒左右),然后请求超时。

标签: algorithm scheduling real-time scheduled-tasks


【解决方案1】:

我不是硬实时调度方面的专家,但你的算法对我来说就是这样。

它与航空航天系统中发生的事情非常相似。您的系统看起来更灵活,但基本上这一切都归结为提前知道您有资源来运行您需要运行的任务。

关键的嵌入式航空航天系统更喜欢确定性,但作为对潜在缺陷的保护(任务运行时间可能比分配的时间长,如果允许的话),任务引擎将中断这些任务以让其他任务完成。任何剩余的空闲周期有时都可以用来完成被打断的任务,或者任务被视为失败。

请注意,您只能使不重要的任务失败,因此您必须仔细构建您的关键任务,或者拥有一个优先系统,让关键任务无论如何都有机会完成。

您现在回到第一点:您需要确保资源足以运行提前所需的任务。

hth,
一个声音。

【讨论】:

    【解决方案2】:

    这似乎类似于恒定带宽服务器算法

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2020-07-03
      • 1970-01-01
      • 1970-01-01
      • 2011-07-28
      相关资源
      最近更新 更多