FreeRTOS内核:详解Task各状态(GPT4帮写)

FreeRTOS内核:详解Task各状态(GPT4帮写)

  • 1. 背景
  • 2. Task顶层状态区分
  • 3. 运行状态(Running)
  • 4. 非运行状态
    • 4.1 阻塞态(Blocked):
    • 4.2 挂起态(Suspended)
    • 4.3 就绪态(Ready)
  • 总结:
  • 博主热门文章推荐:
  • 附:GPT4 output:

(注:本文部分文案由ChatGPT辅助生成,但内容均经过Howie审核和优化,放心使用。)


1. 背景

在嵌入式系统中,任务(Task)是指系统中的最小执行单元,它可以是一个简单的函数或者是一个包含多个子任务的复杂任务。
而FreeRTOS是一个基于优先级调度的实时操作系统,因此任务状态的变化对系统的稳定性和性能有着至关重要的影响。

因此,了解FreeRTOS各个任务状态的含义和变化规律对于开发人员来说是非常重要的。


2. Task顶层状态区分

从顶层状态区分,FreeRTOS只分为运行和非运行状态,并且会在这两种状态不断切换,以实现操作系统功能:

在这里插入图片描述


3. 运行状态(Running)

  • Running:表示任务正在执行。

当FreeRTOS某个任务处于运行态时,处理器就正在执行它的代码。


4. 非运行状态

当一个任务处于非运行态时,它的所有状态Context都被保存,以便在下一次调度器决定让它进入运行态时可以恢复执行。

非运行态又细分为Ready、Blocked、Suspended、Deleted和Invalid几种状态,

下图为整体关系图:
在这里插入图片描述

task各状态间切换实现如下:

  • 任务从Running状态转换为Blocked状态,是由任务自己主动调用FreeRTOS提供的阻塞函数来实现的,比如等待一个信号量或者一个消息队列。
  • 任务从Ready状态转换为Running状态,是由调度器自动完成的,调度器会根据任务的优先级来决定下一个要执行的任务。
  • 任务从Running状态转换为Blocked状态,是由任务自己主动调用FreeRTOS提供的阻塞函数来实现的,比如等待一个信号量或者一个消息队列。
  • 任务从Blocked状态转换为Ready状态,是由任务自己主动解除阻塞来实现的,比如接收到了一个信号量或者一个消息队列。
  • 任务从Running状态转换为Suspended状态,是由任务自己主动调用vTaskSuspend()函数来实现的。
  • 任务从Suspended状态转换为Ready状态,是由任务自己主动调用vTaskResume()函数来实现的。
  • 任务从任何状态转换为Deleted状态,都是由任务自己主动调用vTaskDelete()函数来实现的。

几个关键的task状态详细介绍如下:

4.1 阻塞态(Blocked):

  • Blocked:如果一个任务等待某个事件的发生,则该task处于阻塞Blocked,比如等待一个信号量或者一个消息队列。

Blocked是非运行态的一种,也是FreeRTOS正常工作情况频繁的一种状态,表示task由于某些原因无法执行。

Task可以进入阻塞态以等待以下两种不同的Event:

  1. 时间相关Event,如定时、延时,比如某个task可进入阻塞态延时1s。

例如调用vTaskDelay(Tickes)的task将进入阻塞态,经延迟指定时间Ticks后,再转移到就绪态。

  1. 同步相关Event,等待其他task或中断产生的事件:如某task进入阻塞态等待队列有数据到来,数据可能是其他task或中断产生。

FreeRTOS实现同步方法:队列、二值信号量、计数信号量、互斥信号量和互斥量等。

Task可以在进入blocked等待同步Event时制定一个超时时间。比如,某task等待队列中数据到来,但最多只等1s,如果超过1s还没有数据也会退出阻塞态进入运行态。

4.2 挂起态(Suspended)

  • Suspended:表示任务被暂停,此时任务不会被调度执行。

Suspended也是非运行态的一种。Suspended的task对于scheduler是不可见的

  • 调用vTaskSuspend()挂起task,
  • 再调用vTaskResume()来唤醒Task

大多数应用程序中都不会用到挂起状态。

4.3 就绪态(Ready)

  • Ready:表示任务已经准备好执行,但还没有得到CPU资源去运行Running。

Ready既Task等待执行的状态。
如果task处于非运行状态,但既没有blocked也没有suspended,则此时为Ready to running,但尚未运行。

总结:

FreeRTOS提供了多种任务状态,可以满足不同的应用场景。开发人员可以根据实际需求选择合适的状态,并根据变化规律编写相应的代码来实现任务的状态转换。

FreeRTOS各个任务状态的含义和变化规律是嵌入式系统开发中非常重要的一部分。掌握这些知识可以帮助开发人员更好地理解任务的工作原理,并且可以编写出更加高效、稳定的嵌入式系统


博主热门文章推荐:

在这里插入图片描述

一篇读懂系列:

  • 一篇读懂无线充电技术(附方案选型及原理分析)
  • 一篇读懂:Android/iOS手机如何通过音频接口(耳机孔)与外设通信
  • 一篇读懂:Android手机如何通过USB接口与外设通信(附原理分析及方案选型)

LoRa Mesh系列:

  • LoRa学习:LoRa关键参数(扩频因子,编码率,带宽)的设定及解释
  • LoRa学习:信道占用检测原理(CAD)
  • LoRa/FSK 无线频谱波形分析(频谱分析仪测试LoRa/FSK带宽、功率、频率误差等)

网络安全系列:

  • ATECC508A芯片开发笔记(一):初识加密芯片
  • SHA/HMAC/AES-CBC/CTR 算法执行效率及RAM消耗 测试结果
  • 常见加密/签名/哈希算法性能比较 (多平台 AES/DES, DH, ECDSA, RSA等)
  • AES加解密效率测试(纯软件AES128/256)–以嵌入式Cortex-M0与M3 平台为例

嵌入式开发系列:

  • 嵌入式学习中较好的练手项目和课题整理(附代码资料、学习视频和嵌入式学习规划)
  • IAR调试使用技巧汇总:数据断点、CallStack、设置堆栈、查看栈使用和栈深度、Memory、Set Next Statement等
  • Linux内核编译配置(Menuconfig)、制作文件系统 详细步骤
  • Android底层调用C代码(JNI实现)
  • 树莓派到手第一步:上电启动、安装中文字体、虚拟键盘、开启SSH等
  • Android/Linux设备有线&无线 双网共存(同时上内、外网)

AI / 机器学习系列:

  • AI: 机器学习必须懂的几个术语:Lable、Feature、Model…
  • AI:卷积神经网络CNN 解决过拟合的方法 (Overcome Overfitting)
  • AI: 什么是机器学习的数据清洗(Data Cleaning)
  • AI: 机器学习的模型是如何训练的?(在试错中学习)
  • 数据可视化:TensorboardX安装及使用(安装测试+实例演示)

附:GPT4 output:

在这里插入图片描述
在这里插入图片描述

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.rhkb.cn/news/8681.html

如若内容造成侵权/违法违规/事实不符,请联系长河编程网进行投诉反馈email:809451989@qq.com,一经查实,立即删除!

相关文章

FreeRTOS内核:详解Queue队列 FIFO(GPT4帮写)

FreeRTOS内核:详解队列管理FIFO 1. 背景2. Queue相关API2.1 xQueueCreate():创建2.2 xQueueSend():发送2.3 xQueueReceive():接收2.4 vQueueDelete():删除2.5 xQueuePeek() :不删除的方式从FIFO读数据&…

chatgpt-如今最流行的自动化测试框架是什么

Whats the best automation test framework? 什么是最好的自动化测试框架? The best automation test framework depends on your specific needs and skill level. Here are some commonly used automation test frameworks: 最好的自动化测试框架取决于您的具体…

你的自动化框架如何设计的?为什么感觉面试官总是不满意,到底问题出在哪?

前言 去面试自动化测试岗位,尤其是接口自动化岗位,面试官总会问:说下你的自动化框架如何设计的? 为什么回答后,面试官对你的框架设计总是感觉不满意? 自动化测试实现的几种方式 对于不同的公司来说&…

使用 ChatGPT 从头开始​​研究和构建 SwiftUI 应用程序

今天我试图从头开始构建一个应用程序,向 ChatGPT 征求意见。我想第一次尝试创建一个基于 IOS 16 的 100% SwiftUI 应用程序。 技术选择 我想在 SwiftUI 中创建一个应用程序,采用模块化、多语言的方法,采用 mvvm 架构并使用协调器。 所以我问我如何创建一个满足我要求的应…

大学生对chatGPT的认知和使用

新一代对话式人工智能chatGPT在全球范围狂揽1亿名用户,不止于科技界破圈,更成为街头巷尾的谈资。 chatGPT能干什么? https://openai.com/blog/chatgpt/ chatGPT官网 写解决方案编写代码 说笑话 个人体验: 实用性强,…

ChatGPT 成全球学生的“作弊神器”?韩国学生“喜”提 0 分……

整理 | 朱珂欣 出品 | CSDN程序人生(ID:coder_life) 仅仅横空出世 70 余天的 ChatGPT ,已经累计用户超 1 亿,创下了互联网最快破亿应用记录。根据 Similarweb 的数据,截至今年 1 月,平均每天…

本科论文查重网站分享

本科论文查重网站分享 本科论文需要查重,很多人都知道。知网作为查重届的权威代表,翟天临博士却不知道知网是什么,于是学历造假最终被发现。本文主角不是翟“博士”,而是和知网一样有论文查重功能的两个免费查重网站——YY和百度…

分享一个靠谱的免费论文查重网站

给大家分享一个靠谱的免费论文查重网站PaperPP:http://www.paperpp.com,可以一站解决“论文查重、改重、降重”等问题TOC 欢迎使用Markdown编辑器 你好! 这是你第一次使用 Markdown编辑器 所展示的欢迎页。如果你想学习如何使用Markdown编辑…

推荐几个免费论文查重网站

文章目录 一、paperyy二、 paperday三、 paperpass四、 paperfree五、 paperok六、 papertime 一、paperyy https://www.paperyy.com/ 二、 paperday https://www.paperday.cn/ 三、 paperpass https://www.paperpass.com/ 四、 paperfree https://www.paperfree.cn/…

股票证券行业,怎样快速获客,有效途径有哪些

证券行业最开始起源于荷兰,全世界第一家股票交易所便是荷兰的阿姆斯特丹交易所,这个交易中心确立了荷兰海上霸主的影响力。证券市场的主体作用便是处理企业融资难题。汇总起來,证券行业要把证券化,都切分优化制成标准物质&#xf…

如何利用tushare获得上市公司的日线行情

本人tushare ID:476096,欢迎交流,可通过此链接注册tushare账号:Tushare大数据社区 大家都知道日线行情对于我们分析股票非常有帮助,那我们如何通过tushare的接口实现这一需求呢。 首先我们打开tushare的数据接口&…

实现财务自由 之 你不可不知的投资股票、基金、房地产、REITs等指数指标查询必备网址(市盈率、国债收益率、派息率等等)

实现财务自由 之 你不可不知的投资股票、基金、房地产、REITs等指数指标查询必备网址(市盈率、国债收益率、派息率等等) 工欲善其事,必先利其器是说:工匠想要使他的工作做好,一定要先让工具锋利。我们想要实现财富自由&#xff0c…

2023ACP世界大赛教育者论坛:让职业教育直面AI机遇与挑战

“AI技术的普及对创意行业和教育带来的影响和变革-2023 Adobe Certified Professional教育者论坛”在苏州西交利物浦大学成功举办。 本次论坛,由Adobe Certified Professional 世界大赛中国赛区组委会主办,联动了来自院校、海内外杰出的创意公司及国际知…

工程落地实践|国产大模型 ChatGLM2-6B 阿里云上部署成功

“ 之前尝试过在各种不同的云平台、云算力,部署清华大模型 ChatGLM2-6B,有失败有成功,但不是很理想。这次使用免费的阿里云机器学习GPU资源,终于成功了。” 01 — 本来以为今天的部署又要失败,却获得意外之喜&#xff…

深度解读字节跳动开源的云原生数据仓库 ByConity

ByConity 基于 ClickHouse 内核开发,采用计算存储分离的架构、主流的 OLAP 引擎和自研的表引擎,提供便捷的弹性扩缩容和极速的分析性能,覆盖实时分析和海量数据的离线分析,帮助企业更好地挖掘数据价值。 责编 | 夏萌 出品 | CSDN&…

《吃豆人》问世 | 历史上的今天

整理 | 王启隆 透过「历史上的今天」,从过去看未来,从现在亦可以改变未来。 今天是 2023 年 5 月 22 日,在 1994 年的今天,知名中文论坛曙光 BBS 站开通。1994 年 4 月 20 日,建立在中科院和北京大学、清华大学之间的中…

Java 之父诞生 | 历史上的今天

整理 | 王启隆 透过「历史上的今天」,从过去看未来,从现在亦可以改变未来。 今天是 2023 年 5 月 19 日,在 1999 年的今天,分布式计算项目 SETIhome 正式向公众发布。SETIhome 是一个通过网际网路利用个人电脑处理天文数据的分布式…

纵览2023世界人工智能大会:百模大战4个月,中国AI产业怎么样了?

文|刘雨琦,编|王一粟 身处大模型的浪潮之中,AI的热度一波接着一波。 7月6日,2023年世界人工智能大会在上海召开,一度冲上了微博热搜榜。在5万平方米的会场中,400多家企业的展台员工都在不遗余…

2023中国费控报销领域最具商业合作价值企业盘点

‍数据智能产业创新服务媒体 ——聚焦数智 改变商业 在企业的日常运营中,控制费用是非常重要的一项任务。一个高效且经济稳健的企业,必然需要严格掌控各项支出。其中,报销费控更是企业控制费用的重要手段。 根据灼识咨询发布的白皮书&#x…

超强版干货投递!Milvus 的部署心得、运维秘籍都在这里了!

好奇 Milvus 读链路的演进?不知如何优化 Milvus?提到 Milvus 的业务场景只能靠想象?想获得其他人的部署经验?困惑于 Zilliz Cloud? 不藏了,摊牌了,对于上述的所有问题,你都可以在今天…