【问题标题】:Simple Discrete event simulation library (C++) for process/task scheduling?用于进程/任务调度的简单离散事件模拟库(C++)?
【发布时间】:2012-07-02 00:18:22
【问题描述】:

简单的问题: 我构建了一个准处理器模拟器,它采用优先级图,确定优先级(和“就绪”指令),在可用功能单元上安排任务等。几乎是一个非常基本的模拟器。

但我意识到我应该在 DES 引擎之上构建它,因为我没有能力(除了设置一个标志并在每个“时钟滴答”上检查每个节点)说“在 10 个周期内,做this”(即在预定义的时间发出信号并处理应该在未来发生或满足预定标准时发生的事件)。

我显然可以自己实现它;构建了一个“事件”类,将它们放在队列中,并在每个周期的结束(或开始)时检查队列,看看那里有什么,但我认为重新发明轮子没有意义。

如此复杂的网络模拟器显然是矫枉过正。我不需要花哨的建模、排队或类似的东西。我只需要一个内置时钟,以及设置要发生的事件、在事情发生时引发标志等的能力,如上所述。

免费软件和 C++ 会很棒。

有人有什么想法吗? (由于其他一些相关的问题,我最接近的是一种叫做 SIMLIB 的东西。)

非常感谢!

【问题讨论】:

  • 如果你已经为任务实现了调度器,你不能让定时器事件成为另一个任务吗?
  • +1 试图避免车轮改造。从您的问题来看,您似乎希望 some DES 引擎的附加功能(否则它只不过是一个循环和一个排序的事件列表,所以使用 any 特定库似乎是矫枉过正),那么你还需要什么?可扩展性(并行模拟)?支持随机分布/RNG?您是否更喜欢特定的世界观(例如,参见informs-sim.org/wsc10papers/019.pdf)?
  • 抱歉延迟回复!调度程序任务不是通用编写的。基于定时器的事件需要大量修改,重点是不要重新发明轮子。

标签: c++ events simulation scheduler des


【解决方案1】:

您可以尝试开放虚拟平台 (OVP)。它似乎提供了您正在寻找的模拟器类型。

【讨论】:

    【解决方案2】:

    试试 SystemC,它是一个免费软件库。我会警告它不是“开源”,因为许可证不兼容 FOSS。

    【讨论】:

    • 是的,不用了,谢谢。我已经研究过 SystemC 的其他方面——即 FPGA 设计——但它也失败了。整个项目看起来/是一团糟。我很感激你有时间回复,但我对此不感兴趣。无论如何,这对于我想做的事情来说太过分了。设置相当于我系统的行为描述的内容并没有多大意义。
    猜你喜欢
    • 2011-04-29
    • 2017-05-31
    • 2012-10-22
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2017-12-30
    • 2011-01-13
    相关资源
    最近更新 更多