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

RTOS(6)任务管理

任务状态理论

我们是怎么实现,两个同优先级的任务之间交替执行的呢?
任务切换的基础:tick中断!
在这里插入图片描述
在这里插入图片描述
在这里插入图片描述
在这里插入图片描述
tick为1ms一个周期,可以通过修改时钟配置修改;
running:正在进行的任务3为running;
ready:任务1和任务2处于ready;
blocked(阻塞状态):等待某事,比如小孩口中的饭还没吃完,就得等吃完才喂;
suspend(暂停状态):主动休息或者被命令休息;
在这里插入图片描述
如何管理这些任务呢?
链表readylist:A->B->C

任务状态实验

创建三个任务
任务一:进入suspend再resume回来
在这里插入图片描述

任务二:进入blocked,delay一会,再进入ready状态
在这里插入图片描述

在这里插入图片描述

在这里插入图片描述

vTaskDelay和vTaskDelayuntil

在这里插入图片描述
dosomething()的时间不定,如何才能保证它的执行周期是不变的呢?
vTaskDelay只能保证延时的时间,不考虑dosomething的时间;
vTaskDelay:等待指定个数的Tick count才能ready,继续执行;
在这里插入图片描述

vTaskDelayuntil:等待到指定的绝对时刻,才能reday,继续执行;
在这里插入图片描述
区别:
在这里插入图片描述
在这里插入图片描述

空闲任务及其钩子函数

在这里插入图片描述
idel task:0
task1:1
task2:2
在这里插入图片描述
FreeRtos是封装好的,不会让你随随便便修改它的源代码,所以他开放了钩子函数让用户使用;
在这里插入图片描述

任务调度

阻塞状态(blocked)的任务,它在等待“事件”,这个事件有两种类型:时间相关的事件,同步事件;

有三个配置在Freertosconfig中,可以决定我们的调度策略
configUSE_PREEMPTION 可以决定是否可以抢占;
configUSE_TIME_SLICING 可以决定同优先级是否轮流进行,无法进行时间片轮转;
如果置于0,除非任务主动放弃cpu,进入blicked或suspend状态,否则直接霸占,其他任务无法执行;
configIDLE_SHOULD_YIELD 可以决定空闲任务是否礼让别的任务;

http://www.lryc.cn/news/198305.html

相关文章:

  • 【UE5】 ListView使用DataTable数据的蓝图方法
  • Anthropic全球上线AI语言模型Claude 2;多模态系统:融合文本和图像的新前沿
  • pdf压缩文件怎么压缩最小?
  • 开源智能体来啦!港大团队发布OpenAgents,可以搞数据分析、聊天、支持200+插件
  • Prometheus metrics数据抓取解析
  • 【算法训练-排序算法 三】【排序应用】合并区间
  • 【iOS】计算器仿写
  • 华为认证 | 华为HCIE认证该怎样备考?
  • 10月份stable diffusion animatediff等插件使用指南,又来更新了
  • 抓包工具charles修改请求和返回数据
  • matlab中绘制 维诺图(Voronoi Diagram)
  • Mybatis TypeHandler 介绍及使用
  • Linux SVN 命令详解
  • Maven依赖引入的优先机制
  • 全开源无加密跨境电商购物网站系统源码(无货源模式+多语言+多货币)
  • Python常用视频编辑操作——读取与保存视频、更改帧数、拼接视频、视频语音合并、视频与图像互转等
  • 从javascript到vue再到react的演变
  • 50个渗透(黑客)常用名词及解释
  • 开源游戏引擎和模拟器的项目合集 | 开源专题 No.38
  • ELK + Filebeat 分布式日志管理平台部署
  • Stable Diffusion原理
  • 2022年亚太杯APMCM数学建模大赛A题结晶器熔剂熔融结晶过程序列图像特征提取及建模分析求解全过程文档及程序
  • 金融网站如何做好安全防护措施?
  • 2023年中国恋爱社区未来发展趋势分析:多元化盈利模式实现可持续发展[图]
  • Elasticsearch:生成式人工智能带来的社会转变
  • 服务器数据恢复-RAID5中磁盘被踢导致阵列崩溃的服务器数据恢复案例
  • 负荷不均衡问题分析处理流程
  • Spring篇---第四篇
  • 算法通过村第十五关-超大规模|白银笔记|经典问题
  • Mini小主机All-in-one搭建教程6-安装苹果MacOS系统