主要内容

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

概述

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

该模型配置Scheduler块来处理闭环控制系统的任务。模拟度量这些控制系统的性能,并提供运行时环境的度量,例如延迟和资源意外。这些结果可以帮助控制系统的设计者为他们的功能组件开发体系结构规范。

在MATLAB中创建自定义调度程序

根模型的调度程序块主要是作为MATLAB®离散事件系统开发的。MATLAB文件seSchedulerClass包含相应的离散事件系统对象的实现。

该示例将控制器建模为Simulink®导出函数模型。控制器的执行映射到计划定期执行的软件任务。一个任务可以被划分为多个部分(或子任务)。由于数据依赖关系,这些段必须按顺序执行。

Scheduler块包含以下参数:

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

  • 调度策略:操作系统的调度策略可选择“基于优先级”或“轮循”。基于优先级的调度可以按优先级顺序对任务进行排序和执行。轮询策略允许任务平等地轮流执行。

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

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

  • 任务优先级:每个任务的优先级,值越小优先级越高。

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

  • 各段的Simulink函数:与任务的每个段相关联的可执行程序。这些可执行文件由导出函数模型的Simulink函数表示。

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

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

  • 每个任务对资源的使用情况:细胞向量。vector的每个元素表示任务对资源的使用情况。

比较不同的核心分配

Scheduler块允许您分配任意数量的内核,并研究它如何影响系统性能。我们从一个场景开始,其中分配了两个核心来执行两个控制任务。两种闭环控制系统都具有足够的处理能力,能够很好地响应设定点的变化。

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

相比之下,当只分配一个核心时,Controller1的性能会由于任务溢出而下降(参见Plant1)。计时图清楚地表明了这样的任务超时,以及显著增加的延迟。

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

比较不同的调度策略

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

比较不同的资源分配

现在,让我们将调度器配置回使用两个核心,并研究不同的资源分配方案。我们添加一个可以被任务以互斥的方式共享的资源。

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

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

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

相关的例子

另请参阅

|||||

相关的话题

Baidu
map