《嵌入式系统设计与应用》:
5)功能聚合任务的划分
将关系密切的若干功能组合成为一个任务,达到功能聚合的效果。关系密切有两个含义:数据关联紧密和/或时序关联紧密。如果将关系密切的若干功能分别用不同的任务来实现,则需要进行大量的数据通信和(或)同步通信,这对系统是一个很大的负担。而将关系密切的若干功能组合成为一个任务,相关数据为各个功能共享,同步机制通过合理安排各个功能在任务中的时序来实现。
6)触发条件相同任务的划分
如果若干功能由相同的事件触发,就可以将这些功能组合成为一个任务,从而免除将事件分发给多个任务的工作量。但这样做是有条件的:当以某种次序顺序执行这些功能时,各个功能的实时性要求仍然可以得到满足,且各个功能在执行中不会出问题。被各种外部条件触发的任务通常是关键任务和(或)紧迫任务,应该按前面介绍的方法去处理。符合本类任务的触发条件通常是内部事件,例如通过运算处理产生了某种结果,根据这个结果,需要执行若干功能,这些功能就可以组合成为一个任务。
7)运行周期相同任务的划分
绝大多数功能都需要不停地重复执行,如果重复执行的条件是固定的时间间隔,则这个功能具有周期性。我们应该将周期相同的功能组合在一起封装为一个任务,就可以避免一个时间事件触发几个任务,省去事件分发操作与它们之间的通信。
8)顺序操作任务的划分
如果若干功能按固定顺序进行流水作业,相互之间完全没有“并发性”,则应该将这些功能组合为一个任务。如果将它们分别用不同的任务封装,则必须在这些任务之间进行频繁的同步通信,以实现任务之间的“接力赛”,完成规定的操作顺序。
6.3.3操作系统中任务函数的结构
在基于实时操作系统的应用程序设计中,任务设计是整个应用程序的基础,其他软件设计工作都是围绕任务设计来展开的,任务设计就是设计“任务函数”和相关的数据结构。
在用户任务函数中,必须包含至少一次对操作系统服务函数的调用,否则比其优先级低的任务将无法得到运行机会。这是用户任务函数与普通函数的明显区别。任务函数的结构按任务的执行方式可以分为三类:单次执行类、周期执行类和事件触发类。
……
展开