【RTOS】《基于嵌入式实时操作系统的程序设计技术》——任务的划分与封装
任务的划分与封装
关键任务的划分处理
对于某些对于系统的正常运作至关重要,少执行一次会对系统产生较大影响的功能,我们倾向于将它从原有任务中剥离出来,称为关键任务,用一个独立任务或者ISR(如外部中断)执行,由于关键任务的核心地位,关键任务一般需要与其他任务进行通信,而一般情况下,我们会创建一个单独的消息分发任务,由外部中断与消息分发任务通信,再由消息分发任务与其他任务通信,注意消息分发任务的优先级要高于所有操作任务,而对于uCOSii,消息发送函数OSMboxPost(),具有广播功能,发送一条消息就可以使所有等待该消息的任务进入就绪态
如采用单独创建关键任务的方法,必须确保关键任务由足够高的优先级和查询频率
紧迫任务的划分处理
紧迫任务具有很高的实时性要求,由于大多数紧迫任务是由异步事件触发的,最优的手段依旧是将其安排在ISR里,注意对于紧迫任务,要尽可能精简,将 “不那么紧迫” 的部分剥离另外封装
对于又关键又紧迫的任务,按紧迫任务处理
数据处理任务的划分处理
数据处理任务一般是用户应用程序中耗时最多的部分,对于为不同功能服务的单元,应将这些单元划分包装成不同的任务,对于耗时较多的任务,通常安排较低的优先级
功能聚合任务的划分处理
对于关系密切的若干功能,何以合成一个任务
触发条件相同的任务划分处理
对于若干功能又相同事件触发的任务,可以将他们合成一个任务避免冲突
顺序操作任务之间没有并发性,合成一个任务
不好意思水了一篇