Freertos中任务切换的具体实现过程是怎样的?

2026-05-19 17:340阅读0评论SEO资讯
  • 内容介绍
  • 文章标签
  • 相关推荐

本文共计3462个文字,预计阅读时间需要14分钟。

Freertos中任务切换的具体实现过程是怎样的?

前言+任务调度实现的两个核心:+调度器实现;+(上一章已描述调度器基础)+任务切换实现;+接口层实现。原文:李志明博客:https://www.cnblogs.com/lizhuming/p/16080202.+6.1+任务切换基础。

前言

任务调度实现的两个核心:

  • 调度器实现;(上一章节已描述调度基础)

  • 任务切换实现。

    • 接口层实现。

原文:李柱明博客:www.cnblogs.com/lizhuming/p/16080202.html

6.1 任务切换基础

任务切换就是在就绪列表中寻找优先级最高的就绪任务,然后去执行该任务。

任务切换有两种方法:

  1. 手动:taskYIELD(),调用该API,强制触发任务切换。在中断中强制任务切换调用portYIELD_FROM_ISR()
  2. 系统:系统节拍时钟中断,在该中断回调里会检查是否触发任务切换。

任务切换的大概内容:

  1. 保存上文。
  2. 恢复下文。

重点:上述中不管是系统还是手动触发切换任务,都只是触发而已,最终还是根据就绪表中最高优先级任务更新到pxCurrentTCB变量,然后切换到pxCurrentTCB指向的任务。

阅读全文

本文共计3462个文字,预计阅读时间需要14分钟。

Freertos中任务切换的具体实现过程是怎样的?

前言+任务调度实现的两个核心:+调度器实现;+(上一章已描述调度器基础)+任务切换实现;+接口层实现。原文:李志明博客:https://www.cnblogs.com/lizhuming/p/16080202.+6.1+任务切换基础。

前言

任务调度实现的两个核心:

  • 调度器实现;(上一章节已描述调度基础)

  • 任务切换实现。

    • 接口层实现。

原文:李柱明博客:www.cnblogs.com/lizhuming/p/16080202.html

6.1 任务切换基础

任务切换就是在就绪列表中寻找优先级最高的就绪任务,然后去执行该任务。

任务切换有两种方法:

  1. 手动:taskYIELD(),调用该API,强制触发任务切换。在中断中强制任务切换调用portYIELD_FROM_ISR()
  2. 系统:系统节拍时钟中断,在该中断回调里会检查是否触发任务切换。

任务切换的大概内容:

  1. 保存上文。
  2. 恢复下文。

重点:上述中不管是系统还是手动触发切换任务,都只是触发而已,最终还是根据就绪表中最高优先级任务更新到pxCurrentTCB变量,然后切换到pxCurrentTCB指向的任务。

阅读全文