当前位置: 首页 > ops >正文

FreeRTOS基础知识记录

FreeRTOS基础知识

1、任务调度简介
简述:调度器就是使用相关的调度算法来决定当前需要执行的任务

FreeRTOS一共支持三种任务调度方式
1、抢占式调度
主要针对优先级不同的任务,每个任务都有一个优先级,优先级高的任务可以抢占优先级低的任务
1. 高优先级任务,优先执行
2. 高优先级任务不停止,低优先级任务无法执行
3. 被抢占CPU的任务将会进入就绪态

2、时间片调度
主要针对优先级相同的任务,当多个任务优先级相同时,任务调度器会在每一次时间片到的时候切换任务
1. 同等优先级任务,轮流执行;时间片流转
2. 一个时间片大小,取决为滴答定时器中断频率
3. 注意任务中途被打断或阻塞,没有用完的时间片不会再使用,下次该任务得到执行还是按照一个时间片的钟时间进行

3、协程式调度
主要是函数调用,FreeRTOS现在虽然还支持,但是官方已经表示不再开发协程式调度

2、任务状态
FreeRTOS中任务共有4种状态:
1、运行态
正在执行的任务,该任务就处于运行态,注意在STM32中,同一时间仅一个任务处于运行态

2、就绪态
如果该任务已经能够被执行,但当前还未被执行,那么此任务处于就绪态

3、阻塞态
如果一个任务因延时或等待外部事件发生,那么这个任务就处于阻塞态

4、挂起态
类似暂停,调用函数vTaskSuspend()进入挂起态,需要调用解除挂起函数vTaskResume()才可以进入就绪态

注意:
1. 仅就绪态可转变成运行态
2. 其他状态的任务想运行,必须先转变成就绪态

就绪列表:pxReadyTasksLists[x],其中x代表任务优先级数值
阻塞列表:pxDelayedTaskList
挂起列表:pxSuspendedTaskList

调度器是会在所有处于就绪队列的任务中,选择具有最高优先级的任务来执行

http://www.xdnf.cn/news/19066.html

相关文章:

  • MySQL 中有哪些锁类型?
  • 华为交换机S5700设置acl
  • 衡石SENSE 6.0技术解析:Workflow到Agent模式如何重塑计算框架
  • ADC模数转换
  • Android init 进程部分理论
  • 解决使用OSS的multipartUpload方法上传大文件导致内存溢出的问题
  • 设计模式-行为型模式-命令模式
  • 【编号513】2025年全国地铁矢量数据
  • 从混乱到高效:ITSM软件如何重塑企业IT管理的新格局
  • 淘宝四个月造了一个超越美团的“美团”
  • 对接印度股票市场 数据源API
  • 逻辑漏洞 跨站脚本漏洞(xss)
  • 滚珠导轨如何赋能精密制造?
  • 【技术分享】系统崩溃后产生的CHK文件如何恢复?完整图文教程(附工具推荐)
  • 采用机器学习的苗期棉株点云器官分割与表型信息提取
  • DINOv3:自监督视觉模型的新里程碑!
  • Matlab实现基于CPO-QRCNN-BiGRU-Attention注意力多变量时间序列区间预测
  • Rust:所有权
  • 音视频学习(五十九):H264中的SPS
  • 使用STM32CubeMX使用CAN驱动无刷电机DJI3508
  • VisualStudio 将xlsx文件嵌入到资源中访问时变String?
  • HTML 和 JavaScript 关联的基础教程
  • LeetCode 刷题【56. 合并区间】
  • Linux - 中文显示乱码问题解决方法(编码查看及转换)- 学习/实践
  • 【Spring Cloud微服务】6.通信的利刃:深入浅出 Spring Cloud Feign 实战与原理
  • 智能体开发:学习与实验 ReAct
  • web端播放flv视频流demo(flv.js的使用)
  • API 月度更新汇总:ONLYOFFICE 协作空间文档
  • 【RAG Agent实战】告别“单线程”RAG:用查询理解与LangGraph构建能处理复杂意图的高级代理
  • WPF+IOC学习记录