Freertos中任务切换的具体实现过程是怎样的?
- 内容介绍
- 文章标签
- 相关推荐
本文共计3462个文字,预计阅读时间需要14分钟。
前言+任务调度实现的两个核心:+调度器实现;+(上一章已描述调度器基础)+任务切换实现;+接口层实现。原文:李志明博客:https://www.cnblogs.com/lizhuming/p/16080202.+6.1+任务切换基础。
前言任务调度实现的两个核心:
-
调度器实现;(上一章节已描述调度基础)
-
任务切换实现。
- 接口层实现。
原文:李柱明博客:www.cnblogs.com/lizhuming/p/16080202.html
6.1 任务切换基础任务切换就是在就绪列表中寻找优先级最高的就绪任务,然后去执行该任务。
任务切换有两种方法:
- 手动:
taskYIELD(),调用该API,强制触发任务切换。在中断中强制任务切换调用portYIELD_FROM_ISR()。 - 系统:系统节拍时钟中断,在该中断回调里会检查是否触发任务切换。
任务切换的大概内容:
- 保存上文。
- 恢复下文。
重点:上述中不管是系统还是手动触发切换任务,都只是触发而已,最终还是根据就绪表中最高优先级任务更新到pxCurrentTCB变量,然后切换到pxCurrentTCB指向的任务。
本文共计3462个文字,预计阅读时间需要14分钟。
前言+任务调度实现的两个核心:+调度器实现;+(上一章已描述调度器基础)+任务切换实现;+接口层实现。原文:李志明博客:https://www.cnblogs.com/lizhuming/p/16080202.+6.1+任务切换基础。
前言任务调度实现的两个核心:
-
调度器实现;(上一章节已描述调度基础)
-
任务切换实现。
- 接口层实现。
原文:李柱明博客:www.cnblogs.com/lizhuming/p/16080202.html
6.1 任务切换基础任务切换就是在就绪列表中寻找优先级最高的就绪任务,然后去执行该任务。
任务切换有两种方法:
- 手动:
taskYIELD(),调用该API,强制触发任务切换。在中断中强制任务切换调用portYIELD_FROM_ISR()。 - 系统:系统节拍时钟中断,在该中断回调里会检查是否触发任务切换。
任务切换的大概内容:
- 保存上文。
- 恢复下文。
重点:上述中不管是系统还是手动触发切换任务,都只是触发而已,最终还是根据就绪表中最高优先级任务更新到pxCurrentTCB变量,然后切换到pxCurrentTCB指向的任务。

