首页 | 嵌入式系统 | 显示技术 | 模拟IC/电源 | 元件与制造 | 其他IC/制程 | 消费类电子 | 无线/通信 | 汽车电子 | 工业控制 | 医疗电子 | 测试测量
首页> 分享下载> 常用文档> 一种裸奔多任务模型

一种裸奔多任务模型

资料介绍
一个网友的总结:stateMachine + timerTick + queue。



一种裸奔多任务模型



一个网友的总结:stateMachine + timerTick + queue。



在RTOS环境下的多任务模型:

任务通常阻塞在一个OS调用上(比如从消息队列取数据)。

外部如果想让该任务运转,就要向消息队列发送消息。

任务收到消息时,根据当前状态,决定如何处理消息。这就是状态机。

任务将消息队列中的消息处理完毕后,重新进入阻塞状态。

任务在处理中,有时要延时一段时间,然后才继续工作:

为了充分使用CPU,可以通过OS调用让其它任务去工作。

OS通常会提供一个taskDelay调用。

当任务调用taskDelay时,即进入阻塞状态,直到超时,才重新进入可工作状态(就
绪状态)。



下面说说裸奔环境下的多任务模型:

裸奔也可以多任务,但调度是由用户自主控制。

在RTOS环境下,一般提供抢占式调度。在裸奔时,一般是任务在处理告一段落后,主动
结束处理。

RTOS环境下的任务,一般处于一个while(1)循环中。

while(1){

从消息队列接收消息。如果没有,将阻塞。

处理消息。



裸奔下的任务,一般采用查询方式:



查询是否有待处理的事件。

如果没有,返回。

如果有,根据任务的当前状态,进行处理。处理完毕后,可能返回,也可能将待处
理事件全部处理完毕后再返回。



裸奔任务其实也处于一个while(1)循环中,只不过这个循环在任务外部。

main()

{

A_taskInit(); //任务的初始化

B_taskInit();

...

while(1){

A_taskProc(); //任务的处理

标签: RTOS多任务模型裸奔模式OS
一种裸奔多任务模型
本地下载

评论