任务计划程序功能对系统的影响



我正在了解任务计划程序的功能。例如,我正在研究32位英飞凌Aurix Tricore控制器,其任务计划程序设计为5毫秒。现在,如果我设计在 10 毫秒的任务调度程序函数而不是 5 毫秒上运行我的应用程序,我应该考虑什么样的数据?

例如对 CPU 运行时的影响、CPU 负载分析等?

就像我在低级代码中更改任务计划程序如何影响代码执行一样。

简而言之,任务切片时间越短,多任务处理对用户来说就越流畅。 另一方面,更多的任务切换会增加切换任务而不是运行任务所花费的时间。

许多任务的时间越长意味着长时间重新访问相同的任务(例如,更生涩的行为)。

(注意:我通常在非常低端的MCU上使用1ms的任务开关,结果非常好,总共大约有5-10个任务。

如果要将整个调度程序更改为在 10ms 而不是 5ms 上运行,那么应考虑软件是否能够及时检测到系统的变化(例如,如果您有环境温度传感器等传感器,则值在 5ms 内变化的概率极为罕见。但另一方面,如果您检测到轮速之类的东西,10ms 可能会很慢)。同样,还应考虑是否可以控制执行器以在系统中创建所需的响应。如果考虑这两件事,并且任务执行时间(不是频率)在限制范围内,则CPU负载将不是问题。

注意:如果您的应用程序具有在假设任务在 5ms 内运行的情况下计算延迟的代码,则需要更改此设置

另一方面,如果您除了5ms 任务之外还要添加 10ms 任务,那么您应该考虑以下几点

1.添加新的时间片会增加额外的上下文切换操作,这将增加延迟。

2.同样基于任务的优先级和抢占/合作行为,一个任务可能会在一段时间内阻止另一个任务,这可能会对功能造成滞后或导致其故障,但这只是一个概率,也不需要发生。

3.上下文拼接也意味着您现在需要使用比以前更多的堆栈区域,根据您的项目利用率,这可能会导致问题

您需要分析您的软件才能得出第 2 点和第 3 点的结论.我给出了一些有助于分析的示例

例1:如果与5ms任务的执行时间相比,10ms任务的执行时间(不是频率)可以忽略不计,那么更好的选择是也将此功能安排在5ms内,因为这将节省上下文切换时间以及堆栈大小。

例2:如果10ms任务的执行时间相对较长,并且优先级低于5ms(并且被5ms任务抢占),则最好在10ms任务中使用该功能,因为这将帮助5ms任务在下一个切片之前完成其执行。

最新更新