[原创]我的uC/OS-II,我的读书笔记之任务划分(上)
我的uC/OS-II,我的读书笔记之任务划分(上)
一个具体的嵌入式应用系统进行“任务划分”是实验操作系统应用软件设计的关键,任务划分是否合理直接影响软件设计的质量。当任务划分得合理时,软件设计将比较简洁、高效;否则将可能比较繁杂,甚至失败。本章将介绍任务划分的问题。
任务特性
“任务”的基本特性是“动态性”“独立性”“并发性”。这是“任务”与“程序模块”的本质区别。
任务的动态性:“任务”的状态是动态变化的,通常有“就绪态”“运行态”“等待态”等。“任务”并不是随时都可以运行的,而一个已经开始运行的“任务”并不能保证一直占有CPU的使用权。
任务的独立性:在操作系统环境下的“任务”看来,CPU为自己“独占”。所谓“独占”,即“旁若无人”,一个任务“看不见”另外一个任务。在这种情况下,一个任务不可能像“调用子程序”那样调用另外一个任务;
举例说明之:当两个“模块”需要进行“信息”传输时,主模块以“实参”形式将信息传输给子模块的“形参”,子模块以“返回值”的形式将结果传输给主模块。“模块”之间的信息传输是“当面”完成的,因为模块之间是相互“看得见”。“当面”的本质是“同步”“给”和“拿”在同一时刻完成。
但由于“任务”之间互相“看不见”,所以它们之间的信息传输就无法“当面”完成。当两个任务需要进行信息传输时,只能采用“异步”方式。类似于,我们将购物清单和货款交给“第三方”,由“第三方”转交给“购买者”。“购买者”完成购物后,货物同样只能通过“第三者”转交。(“第三者”的角色由操作系统中的各种“通信”机制实现。)由于“第三者”的介入,主人“给”钱的时间和“购买者”拿到钱的时间不同,交货时间与“我”拿到货物的时间也不同,即“传输是异步的”,其时间的滞后与多种因素有关,无法事先准确固定。所有“任务”在逻辑上都是“平等”的,在信息传输上都是“异步”的。
任务的并发性:操作系统的“任务调试”功能是为了解决这样一个问题:在某个时刻,有多个任务均处于就绪状态,应该让哪个任务运行?uC/OS采用“可剥夺型”任务调试算法。“已经就绪的高优先级任务”可以剥夺另一个“正在运行的低优先级任务”的运行权而进入运行状态。
任务划分的目标
首要目标是满足“实时性”指标,即在最坏的情况下,系统中所有对实时性有要求的功能都能够正常实现。
任务数目合理,任务数目适当减少是非常有利的。
简化软件系统,这里主要还是指得合理划分任务。
降低资源要求,因为任务与任务之间如果协同。
以上是任务划分的理论方法,具体的划分方法,咱们下周在一起探讨……
关键词: 原创 我的 OS-II 读书 笔记 任务 划分
回复
有奖活动 | |
---|---|
【有奖活动】分享技术经验,兑换京东卡 | |
话不多说,快进群! | |
请大声喊出:我要开发板! | |
【有奖活动】EEPW网站征稿正在进行时,欢迎踊跃投稿啦 | |
奖!发布技术笔记,技术评测贴换取您心仪的礼品 | |
打赏了!打赏了!打赏了! |
打赏帖 | |
---|---|
与电子爱好者谈读图二被打赏50分 | |
【FRDM-MCXN947评测】Core1适配运行FreeRtos被打赏50分 | |
【FRDM-MCXN947评测】双核调试被打赏50分 | |
【CPKCORRA8D1B评测】---移植CoreMark被打赏50分 | |
【CPKCORRA8D1B评测】---打开硬件定时器被打赏50分 | |
【FRDM-MCXA156评测】4、CAN loopback模式测试被打赏50分 | |
【CPKcorRA8D1评测】--搭建初始环境被打赏50分 | |
【FRDM-MCXA156评测】3、使用FlexIO模拟UART被打赏50分 | |
【FRDM-MCXA156评测】2、rt-thread MCXA156 BSP制作被打赏50分 | |
【FRDM-MCXN947评测】核间通信MUTEX被打赏50分 |