前言
UCOS是非常经典的一个实时操作系统,关于UCOSII和UCOSIII有一些不同,但是整体思想是一致的。本文就不过多介绍UCOS,直入主题了。任务至少需要什么
- 任务函数:实现功能
- 任务堆栈:CPU的快照,在任务切换时保存或恢复现场
- 任务控制块:任务的动态档案,一般由操作系统管理
任务的特性
独立性
各个任务都是不可见对方的,如果需要信息传输只能进行异步通信,由第三者(信号量、邮箱、消息队列等)代劳。
并发性
宏观上可一起执行,微观上则是利用各个任务执行的间隙时间,交叉执行。同时实时的嵌入式操作系统是可剥夺型的任务调度。
动态性
任务并不是随时都可以运行的,一个已经开始运行的任务并不能一直占有CPU,它随时可能被更高级的任务剥夺去CPU的使用权。
任务划分
合理的任务划分是软件设计质量的关键。
设备依赖任务的划分:以CPU为中心,将各种不输入/输出设备相关的功能划分为独立的任务。
关键任务划分:必须保证关键任务的执行,不能被遗漏一次,不能被其他任务拖累,可以放在中断或者独立为高优先级任务,通过“第三者”传输信息,触发其他任务。
紧迫任务:必须在规定时间内完成,可以遗漏一两次,可设计在中断中或者单独的高优先级任务。
数据处理任务:可单独划分出来,设置较低优先级
功能聚合:如果功能相似,可设计为一个任务,减少异步通信,减少系统消耗。
触发条件相同任务:由相同时间触发的若干功能组合为一个任务,免除事件分发机制。
运行周期相同任务:运行周期相同的功能组合到一个任务,免除时间事件分发机制。
顺序执行功能:顺序执行的功能组合为一个任务,免除同步接力通信的麻烦。
任务可调度性分析(速率单调分析RMA)
应该要满足测量公式。
总结
本文内容从《嵌入式实时操作系统程序设计》一书总结而来,这本书非常长棒,收获颇丰。本文主要介绍了任务的一些基本知识,是后续学习的一个基础。