- 35
- 0
- 约4.34万字
- 约 16页
- 2021-11-25 发布于江苏
- 举报
这个操作系统很给力
这个操作系统很给力
一种裸奔多任务模型
一种裸奔多任务模型
stateMachine timerTick queue
stateMachine timerTick queue
一个网友的总结: + + 。
一个网友的总结: + + 。
RTOS
在RTOS 环境下的多任务模型:
在 环境下的多任务模型:
OS
OS
任务通常阻塞在一个 调用上 (比如从消息队列取数据)。
任务通常阻塞在一个 调用上 (比如从消息队列取数据)。
外部如果想让该任务运转,就要向消息队列发送消息。
外部如果想让该任务运转,就要向消息队列发送消息。
任务收到消息时,根据当前状态,决定如何处理消息。这就是状态机。
任务收到消息时,根据当前状态,决定如何处理消息。这就是状态机。
任务将消息队列中的消息处理完毕后,重新进入阻塞状态。
任务将消息队列中的消息处理完毕后,重新进入阻塞状态。
任务在处理中,有时要延时一段时间,然后才继续工作:
任务在处理中,有时要延时一段时间,然后才继续工作:
CPU OS
CPU OS
为了充分使用 ,可以通过 调用让其它任务去工作。
为了充分使用 ,可以通过 调用让其它任务去工作。
OS taskDelay
OS 通常会提供一个taskDelay 调用。
通常会提供一个 调用。
taskDelay
当任务调用taskDelay 时,即进入阻塞状态,直到超时,才重新进入可工作状态 (就绪状
当任务调用 时,即进入阻塞状态,直到超时,才重新进入可工作状态 (就绪状
态)。
态)。
下面说说裸奔环境下的多任务模型:
下面说说裸奔环境下的多任务模型:
裸奔也可以多任务,但调度是由用户自主控制。
裸奔也可以多任务,但调度是由用户自主控制。
RTOS
在RTOS 环境下,一般提供抢占式调度。在裸奔时,一般是任务在处理告一段落后,主动结
在 环境下,一般提供抢占式调度。在裸奔时,一般是任务在处理告一段落后,主动结
束处理。
束处理。
RTOS while(1)
RTOS 环境下的任务,一般处于一个while(1)循环中。
环境下的任务,一般处于一个 循环中。
while(1) {
while(1) {
从消息队列接收消息。如果没有,将阻塞。
从消息队列接收消息。如果没有,将阻塞。
处理消息。
处理消息。
}
}
裸奔下的任务,一般采用查询方式:
裸奔下的任务,一般采用查询方式:
{
{
查询是否有待处理的事件。
查询是否有待处理的事件。
如果没有,返回。
如果没有,返回。
如果有,根据任务的当前状态,进行处理。处理完毕后,可能返回,也可能将待处理事件
如果有,根据任务的当前状态,进行处理。处理完毕后,可能返回,也可能将待处理事件
全部处理完毕后再返回。
全部处理完毕后再返回。
}
}
while(1)
裸奔任务其实也处于一个while(1)循环中,只不过这个循环在任务外部。
原创力文档

文档评论(0)