FreeRTOS 任务管理基本概念

对于整个单片机程序,我们称之为application,应用程序。

使用FreeRTOS时,我们可以在application中创建多个任务(task),有些文档把任务也称为线程(thread)。

FreeRTOS 任务管理基本概念

以日常生活为例,比如这个母亲要同时做两件事:

  • 喂饭:这是一个任务
  • 回信息:这是另一个任务

这可以引入很多概念:

  • 任务状态(State):
    • 当前正在喂饭,它是running状态;另一个”回信息”的任务就是”not running”状态
    • “not running”状态还可以细分:
    • ready:就绪,随时可以运行
    • blocked:阻塞,卡住了,母亲在等待同事回信息
    • suspended:挂起,同事废话太多,不管他了
  • 优先级(Priority)
    • 我工作生活兼顾:喂饭、回信息优先级一样,轮流做
    • 我忙里偷闲:还有空闲任务,休息一下
    • 厨房着火了,什么都别说了,先灭火:优先级更高
  • 栈(Stack)
    • 喂小孩时,我要记得上一口喂了米饭,这口要喂青菜了
    • 回信息时,我要记得刚才聊的是啥
    • 做不同的任务,这些细节不一样
    • 对于人来说,当然是记在脑子里
    • 对于程序,是记在栈里
    • 每个任务有自己的栈
  • 事件驱动
    • 孩子吃饭太慢:先休息一会,等他咽下去了、等他提醒我了,再喂下一口
  • 协助式调度(Co-operative Scheduling)
    • 你在给同事回信息
    • 同事说:好了,你先去给小孩喂一口饭吧,你才能离开
    • 同事不放你走,即使孩子哭了你也不能走
    • 你好不容易可以给孩子喂饭了
    • 孩子说:好了,妈妈你去处理一下工作吧,你才能离开
    • 孩子不放你走,即使同事连发信息你也不能走

这涉及很多概念,后续章节详细分析。

赞(0)
未经允许不得转载:极客笔记 » FreeRTOS 任务管理基本概念
分享到: 更多 (0)

评论 抢沙发

  • 昵称 (必填)
  • 邮箱 (必填)
  • 网址