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

freertos的调度过程

一.Preface

理解Freertos的任务调度对理解整个实时操作系统是非常有帮助的,最近抽空又复习了一遍源码,所以在此记录一下。

image



二.freertos的3各任务链表

2.1ready list(array)

a.这是一个链表组,定义了最高优先级为10,则有10个readylist。
b.每隔1个tick,freertos的tick中断就会从里面寻找最高优先级的task链表依次切换,并执行。

2.2delayed list

a.在任务中使用vTaskDelay(or vTaskDelayUntil)会把当前任务放入delayed list。
b.每隔1个tick,freertos的tick中断就会去判断delayed list中任务阻塞时间,如果时间到了,则将任务加入到对应优先级的ready list。

2.3pending list

b.pengding list的用法

点击查看代码
vTaskSuspendAll();	/*确保同一时刻把数据放入队列中*/xQueueOverwrite(accelerometerDataQueue, &sensors.acc);xQueueOverwrite(gyroDataQueue, &sensors.gyro);if (isMagPresent){xQueueOverwrite(magnetometerDataQueue, &sensors.mag);}if (isBaroPresent){xQueueOverwrite(barometerDataQueue, &sensors.baro);}xTaskResumeAll();

2.4对应的链表代码

点击查看代码
PRIVILEGED_DATA static List_t pxReadyTasksLists[ configMAX_PRIORITIES ];/*< Prioritised ready tasks. */
PRIVILEGED_DATA static List_t xDelayedTaskList1;						/*< Delayed tasks. */
PRIVILEGED_DATA static List_t xDelayedTaskList2;						/*< Delayed tasks (two lists are used - one for delays that have overflowed the current tick count. */
PRIVILEGED_DATA static List_t * volatile pxDelayedTaskList;				/*< Points to the delayed task list currently being used. */
PRIVILEGED_DATA static List_t * volatile pxOverflowDelayedTaskList;		/*< Points to the delayed task list currently being used to hold tasks that have overflowed the current tick count. */
PRIVILEGED_DATA static List_t xPendingReadyList;						/*<
http://www.hskmm.com/?act=detail&tid=29697

相关文章:

  • 「2025 高一上学期笔记 / 日记」
  • 「2025 暑假日记 / 笔记」
  • 2025羊城杯初赛Misc-writeup
  • 将 GPU 级性能带到企业级 Java:CUDA 集成实用指南
  • 我的个人空间
  • 2025.10.12总结
  • Windows 文件管理器中重复的 OneDrive 图标原因与解决方案
  • 10.12总结
  • 【Python】pandas的向量化操作
  • docker部署doris
  • ES客户端8版本与ES服务端7版本的兼容问题
  • 使用Sender和io_uring改造Webserver
  • 乐理 -04 打拍子
  • 1012
  • 如何在Renpy尝试中调整人物和背景图像大小
  • 开源软件站
  • 如何安装claude code以及ccr code
  • 代码托管平台
  • 1011
  • 209. 长度最小的子数组 滑动窗口+暴力
  • CISA事件响应实战经验:漏洞修复与应急响应关键教训
  • 机器人视觉系统在复杂环境中的自主决策与学习
  • 2025开关按钮厂家最新权威推荐榜:品质卓越与创新设计的行业
  • 装饰器
  • 记录一下 WPF进程 SendMessage 发送窗口消息进行进程间通信,存在进程权限无法接受消息的问题
  • 正睿25noip十连测day5
  • kettle插件-dm数据库插件,解决kettle9.X版本无法连接数据库资源库问题
  • 2025年10月武汉防水公司TOP5权威推荐榜:专业施工与优质服务的行业
  • 2025开发区婚纱照公司最新权威推荐榜:创意拍摄与贴心服务的
  • 用户交互scanner方法学习及使用示例