开发多核控制系统的自定义调度器

概述

此示例演示如何使用SimEvents MATLAB离散事件系统块对客户调度器建模。该模型包括一个调度程序块,它可以模拟具有任意数量核心、任务和互斥资源的多核系统。

该模型将调度器块配置为处理闭环控制系统的任务。仿真度量了这些控制系统的性能,并提供了运行时环境的度量,例如延迟和资源偶发事件。这些结果可以帮助控制系统的设计人员为其功能组件开发体系结构规范。

在MATLAB中创建自定义调度器

根模型的调度程序块主要作为一个MATLAB离散事件系统开发。MATLAB文件请参阅示例SchedulerClass包含相应的离散事件系统对象的实现。

该示例将控制器建模为Simulink导出的功能模型。控制器的执行映射到计划万博1manbetx定期执行的软件任务。一个任务可以分成多个段(或子任务)。由于数据依赖性,这些段必须按顺序执行。

调度程序块包括以下参数:

  • 芯数:可供操作系统使用的核心数。

  • 计划策略:选择“基于优先级”或“循环”作为操作系统的调度策略。基于优先级的调度按优先级顺序排序和执行任务。循环策略允许任务平均轮流执行。

  • 数量的任务:这个操作系统中的任务数量。

  • 任务期间:为执行而实例化每个任务的频率。

  • 任务优先级:每个任务的优先级(值越小表示优先级越高)。

  • 每个任务的段数:任务具有的段(子任务)数。

  • 万博1manbetx每个段的Simulink函数:与任务的每个段关联的可执行文件。这些可执行文件由导出函数模型的Simulink函数表示。万博1manbetx

  • 每段执行时间:任务段完成的时间,如果它在处理器上执行而没有中断。

  • 互斥资源数量:操作系统的互斥资源数。一次一个任务可以获取和使用资源。操作系统使用互斥锁等机制来管理这些资源。

  • 每个任务对资源的使用:细胞载体。向量的每个元素都指示任务对资源的使用。

比较不同的核心分配

调度程序块允许您分配任意数量的内核,并探索这如何影响系统性能。我们从一个场景开始,其中分配了两个核心来执行这两个控制任务。由于有足够的处理能力,两个闭环控制系统都能很好地响应设定值的变化。

调度程序的时序图表明,控制任务由两个核心并发处理,核心具有中等利用率和平衡利用率。

相比之下,当只分配一个核心时,Controller1的性能会因任务溢出而降低(请参阅Plant1)。时序图清楚地显示了这样的任务溢出和显著增加的延迟。

注意,控制任务2的性能保持不变。这是因为调度器应用基于优先级的策略,其中处理能力被最大限度地分配给高优先级任务。

比较不同的调度策略

此时,如果调度器切换到使用轮询调度策略,则控制系统的执行将有所不同。与前一种情况相比,在处理能力不变的情况下,工厂1变得稳定,而降低了工厂2的性能。这种变化是由于循环策略在所有任务之间平均分配处理能力。

比较不同的资源分配

现在让我们将调度程序重新配置为使用两个核心,并探索不同的资源分配方案。我们添加了一个可由任务以互斥方式共享的资源。

正如时序图所示,虽然允许在两个内核中并发执行,但任务是按顺序处理的。只有一个核心在使用。这是因为任务必须等待所需的资源才能被处理。

您可以通过分配更多资源来消除这种资源偶然性。让我们将调度程序块配置为使用2个资源,并允许任务具有专用资源。

由于每个任务都有自己的资源,因此任务被并发地处理。

相关实例

另见

|||||

相关的话题