RTOS笔记--任务状态与调度

news2025/1/17 20:23:52

任务状态

        freertos中的任务分为四个状态:就绪状态(ready)、运行状态(running)、阻塞状态(blocked)、暂停状态(suspended)

完整的任务状态转换图:

在使用vTaskDelay函数后任务就会转换为阻塞态,阻塞态下需要等待某个时间或某个事件才可以进入准备态随时被调用。

任务在除了暂停状态以外的任何状态都可以通过调用vTaskSuspend函数使得任务进入暂停状态,任务在运行中自行调用,非运行态则可以通过别的运行中的任务调用来令其进入暂停态。在暂停状态下可以调用vTaskResume函数恢复

任务管理与调度

关于优先级

        A.高优先级的任务未运行结束低优先级任务无法运行

        B.一旦高优先级的任务就绪就立刻运行

        C.同优先级的任务轮流运行

在代码中通过链表的方式进行任务管理,在代码宏定义中:

pxReadyTaskLists数组中存放56个链表,而本程序中的最高优先级为56,而这其中每一个链表放置的就是同优先级处于就绪态或运行态的任务TCB结构体

在创建任务的同时还会创建一个pxCurrentTCB指针指向最高优先级的任务,假设有ABC三个同优先级任务按顺序创建,A创建时指向A,B创建时指向B,C创建时指向C,在开启任务调度器后就会从指针处开始运行,因此同优先级最后一个创建的任务最先运行 

在FREERTOS中定义一个1000hz的时钟频率作为tick中断依据,在运行1ms后产生tick中断,中断中设置cnt++作为时钟基准并发起调度,调度的过程就是从上到下遍历pxReadyTaskLists数组中的56个链表,找到第一个非空的链表,使得pxCurrentTCB指针指向下一个任务,每次tick中断就会触发一次调度

高优先级任务可以无需tick调度直接在低优先级任务运行过程中进行抢占,例如,有AB两个任务,B任务优先级高于A任务,那么如果A任务在运行过程中B任务被置于就绪态则B任务会直接抢占开始运行,无需等待tick中断调度,然后在高优先级任务运行中使用DELAY函数则会将其从pxReadyTaskLists中的链表中取出放入xDelayedTaskList1进入阻塞态,并寻找立即下一个运行的任务,在低优先级的任务被抢占时会记录一个index指针指向被抢占的任务,此时就调用此任务。

存放在xDelayedTaskList1链表中的任务的TCB结构体中都会保存有需要等待的时间,而在tick中断时还会判断一下xDelayedTaskList1中的任务是否可恢复,如果可恢复则将其放入pxReadyTaskLists中的链表里,然后再发起调度。

在对任务调用vTaskSuspend函数后将其放入xSuspendedTaskList链表中,在暂停态下无法通过tick中断的判断重新进入就绪态,只能通过调用vTaskResume函数使其回归就绪态

调度总结:

        调度本质上就是链表管理,任务在不同状态下存入不同链表

        rtos中设置tick中断,而tick中断时进行的操作为:

                a.设置cnt++

                b.判断一下xDelayedTaskList1中的任务是否可恢复,如果可恢复则将其放入       pxReadyTaskLists中的链表里

                c.发起调度

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

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈,一经查实,立即删除!

相关文章

短剧市场大爆炸:小米和华为的亿万争夺战,谁能笑到最后?

在数字化媒体的浪潮中,内容消费模式正经历着翻天覆地的变化。短视频的兴起引领了一种全新的娱乐方式,而短剧作为其衍生形式,正逐渐成为各大科技巨头争夺的新战场。 小米和华为,作为中国科技界的两大巨头,也在这一新兴…

Android Studio的Gradle面板里不显示task,build ,assemble 无法出aar包

按照以下方式把对应开关打开就可以正常进行build/assemble进行aar的生成了

回归预测 | MATLAB实现基于GOOSE-LightGBM的多特征输入单输出数据回归预测(鹅优化算法)

回归预测 | MATLAB实现基于GOOSE-LightGBM的多特征输入单输出数据回归预测(鹅优化算法) 目录 回归预测 | MATLAB实现基于GOOSE-LightGBM的多特征输入单输出数据回归预测(鹅优化算法)效果一览基本介绍程序设计参考资料 效果一览 基本介绍 MATLAB实现基于LightGBM算法的数据回归预…

配置Kubernetes资源管理Secret与ConfigMap

前言 Kubernetes 中的 Secret(提供加密模式)和 ConfigMap(提供配置)是关键的资源,用于安全地存储和管理敏感信息和配置数据。它们在应用程序开发和部署过程中扮演着重要的角色。本文将介绍如何有效地配置和管理这些资…

YOLOv8改进有效涨点专栏目录——包含backbone、head、neck和损失函数上百余种改进技巧

专栏地址:YOLOv8改进有效涨点——持续更新中 backbone——主干 YOLOv8改进 | 主干网络 | 将主干网络替换为轻量化的ShuffleNetv2【原理 完整代码】 YOLOv8改进 | 主干网络 | 增加网络结构增强小目标检测能力【独家创新——附结构图】 YOLOv8改进 | 主干网络 | 在…

基于JS实现《国家基本比例尺地形图分幅和编号》标准

1、标准 GB T 13989-2012国家基本比例尺地形图分幅和编号 地址:【高清版】GB T 13989-2012国家基本比例尺地形图分幅和编号 - 道客巴巴 2、1:100万比例尺 2.1 说明 2.2 计算公式 2.3 计算代码 2.3.1 元素数据定义 由于中国只到N层,所以只定义到O. …

2022.9.25DAY677

今日图书馆恢复开放,被同学邀约去图书馆占座位。来到图书馆,想着既然来到了,那就开始复习吧。高数看了第一章的一二节,看着看着,想着光看教材难以去衡量自己有没有掌握,于是又想着要是有章节练习就好了。习…

Xcode下载安装

1.Xcode可用版本判断: 2.Xcode下载安装: 方案1:AppStore 下载更新 若方案1失败则 方案2:指定版本Xcode包下载解压安装 苹果下载 3.Xcode命令行工具插件安装 xcode-select --install 备注: xcode_x.x.x.xip(压缩包存在时效性(使用前24h/…

E10:流程主表表单字段值变化触发事件

效果– //window.WeFormSDK.showMessage("这是一个E10的提示", 3, 2); const onClickCreate () > console.log("create"); const onClickSave () > console.log("save"); const onClickCancel () > dialogComponent?.destroy();/…

教师工龄工资怎么算的

常听到有的老师这样问:“我的工龄工资是怎么计算的?”这个问题可能时常萦绕在老师们的心头。毕竟,工龄工资作为我们辛勤工作的一种肯定,关系到我们的收入,更是一种认可。 工龄工资是依据教师的工作年限来计算的。工龄工…

微软云计算[3]之Windows Azure AppFabric

Windows Azure AppFabric AppFabric概述AppFabric关键技术服务总线访问控制高速缓存 AppFabric概述 AppFabric为本地应用和云中应用提供了分布式的基础架构服务 用户本地应用与云应用之间进行安全联接和信息传递 云应用和现有应用或服务之间的连接及跨语言、跨平台、跨不同标…

现代密码学-国密算法

商用密码算法种类 商用密码算法 密码学概念、协议与算法之间的依赖关系 数字签名、证书-公钥密码、散列类算法 消息验证码-对称密码 ,散列类 安全目标与算法之间的关系 机密性--对称密码、公钥密码 完整性--散列类算法 可用性--散列类、公钥密码 真实性--公…

C++设计模式-单例模式,反汇编

文章目录 25. 单例模式25.1. 饿汉式单例模式25.2. 懒汉式单例模式25.2.1. 解决方案125.2.2. 解决方案2 (推荐写法) 运行在VS2022,x86,Debug下。 25. 单例模式 单例即该类只能有一个实例。 应用:如在游戏开发中&#x…

网易有道QAnything使用CPU模式和openAI接口安装部署

网易有道QAnything可以使用本地部署大模型(官网例子为qwen)也可以使用大模型接口(OPENAI或者其他大模型AI接口 )的方式,使用在线大模型API接口好处就是不需要太高的硬件配置。 本机环境windows11 首先安装WSL环境, 安装方法参考https://zhuan…

如何在springboot项目中使用Mybatisplus

文章目录 1.mybatisplus的作用2.mybatisplus使用流程2.1pom.xml文件中增加依赖(点击右上角蓝色按钮下载依赖)2.2navicat新建数据库,增加application.properties数据库配置2.3 启动类添加注解,增加mapper包操作数据库2.5添加实体类…

外资企业使用卓豪Zoho CRM优势有哪些?

外资企业在中国市场的竞争愈发激烈,为了在众多本土与国际对手中脱颖而出,高效管理客户关系、提升销售业绩、并实现市场精准定位成为了企业不可或缺的竞争力。在这场数字化转型的浪潮中,卓豪Zoho CRM以其卓越的性能和全面的功能,成…

Nginx配置详细解释:(1)全局配置

自启动安装nginx:前面博客有解释 systemctl stop firewalld setenforce 0 [rootNode1 ~]#:mkdir /data [rootNode1 ~]#:cd /data [rootNode1 data]#:yum -y install gcc pcre-devel openssl-devel zlib-devel openssl openssl-devel [rootNode1 data]#:wget http://nginx.o…

【计算机网络】P3 计算机网络协议、接口、服务的概念、区别以及计算机网络提供的三种服务方式

目录 协议什么是协议协议是水平存活的协议的组成 接口服务服务是什么服务原语 协议与服务的区别计算机网络提供的服务的三种方式面向连接服务与无连接服务可靠服务与不可靠服务有应答服务与无应答服务 协议 什么是协议 协议,就是规则的集合。 在计算机网络中&…

反激变压器的漏感及其测量方式

绿色圈的是气隙,蓝色的弧线是那个线包,变压器的漏感,主要由磁力线向空气中散发,没有构成回路,线包自身的磁场,不参与能量传输,还有气隙等。 中间的气隙,由于此处磁力线穿过空气的导磁…

视频生成框架EasyAnimate正式开源!

近期,Sora模型的热度持续上涨,社区中涌现了一些类Sora的开源项目,这些项目均基于Diffusion Transformer结构,使用Transformer结构取代了UNet作为扩散模型的基线,旨在生成更长、更高分辨率、且效果更好的视频。EasyAnim…