路漫漫其修远兮,吾将上下而求索!
分类: Windows平台
2016-01-28 16:08:38
#一、任务的划分
所有的任务在逻辑上是平等的,任务之间不存在调用关系,不像模块之间可以相互调用,因此任务之间是互相“看不见”得。两个模块之间进行信息传输时,往往以参数、返回值的形式进行,这种当面给、当面拿的本质就是同步,因为是在同一时刻完成的。
任务之间是互相看不见得,只能把信息交给“第三者”(各种通信机制)来完成,因此其信息传输时异步的。
**_任务的独立性表现为逻辑上的平等性和信息传输的异步性_**
* 任务的基本特性是“动态性”、“独立性”和“并发性”
* “可剥夺型”任务调度算法:已经就绪的高优先级任务可以剥夺另一个正在运行的低优先级任务的运行权限而进入运行状态。
##1.任务划分的方法
**_任务划分的目标首先要满足“实时性”指标:即使在最坏的情况下,系统中所有对实时性有要求的功能都能够正常实现;再就是简化任务数目,减小代码规模,降低对系统资源的需求_**
* **首先以CPU为中心,将与各种输入、输出设备相关的功能划分为独立的任务。**
>输入输出设备与CPU的速度差别是“并发运行”的前提和基础,也是一个通常都满足的事实。
* 发现“关键”功能,将其最“关键”部分剥离出来,用一个独立任务(或中断)完成,剩余部分用另一个任务来实现,两者之间通过通信机制沟通。
>"关键性"是指某种功能在应用系统中的重要性。如果这种功能不能正常实现,将造成重大的影响,甚至引发灾难性的后果,关键任务必须得到运行机会,即使遗漏执行一次也不行。
* 发现“紧迫”功能,将其最“紧迫”部分剥离出来,用一个独立的高优先级任务(或中断)完成,剩余部分用另一个任务实现,两者之间通过通信机制沟通。
>要达到“按时完成”的目的,必须使“紧迫任务”需要的执行时间尽可能短,尽可能剥离“不太紧迫”的操作。
* 对于既“关键”又“紧迫”的功能,按“紧迫”功能处理。
* 将消耗机时较多的数据处理功能划分出来,封装为低优先级任务。
* 将关系密切的若干功能组合成为一个任务,达到功能聚合的效果。
* 将由相同事件触发的若干功能组合成为一个任务,从而免除事件分发机制。
* 将运行周期相同的功能组合成为一个任务,从而免除时间事件分发机制。
* 将若干按固定顺序执行的功能组合为一个任务,从而免除同步接力通信的麻烦。