当前位置: 首页 > 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 可以决定空闲任务是否礼让别的任务;

相关文章:

RTOS(6)任务管理

任务状态理论 我们是怎么实现,两个同优先级的任务之间交替执行的呢? 任务切换的基础:tick中断! tick为1ms一个周期,可以通过修改时钟配置修改; running:正在进行的任务3为running&#xff…...

【UE5】 ListView使用DataTable数据的蓝图方法

【UE5】 ListView使用DataTable数据的蓝图方法 ListView 是虚幻引擎中的一种用户界面控件,用于显示可滚动的列表。它可以用于显示大量的数据,并提供了各种功能和自定义选项来满足不同的需求。 DataTable是虚幻引擎中的一种数据表格结构,用于存…...

Anthropic全球上线AI语言模型Claude 2;多模态系统:融合文本和图像的新前沿

🦉 AI新闻 🚀 Anthropic全球上线AI语言模型Claude 2,编程、数学、推理能力大幅提升 摘要:Anthropic在全球正式上线了AI语言模型Claude 2。相比前代版本,Claude 2在编程、数学、推理等方面都有大幅提升,支…...

pdf压缩文件怎么压缩最小?

pdf压缩文件怎么压缩最小?我们很多项目介绍或是学术的报告都是采用的这个pdf格式,那么我们在存储或是需要进行分享的时候,可能就会因为文件过大而导致无法打开或是发送了。那么就需要将其进行压缩。PDF文件压缩方法很多,pdf压缩文…...

开源智能体来啦!港大团队发布OpenAgents,可以搞数据分析、聊天、支持200+插件

夕小瑶科技说 原创 作者 | 智商掉了一地、ZenMoore 港大的研究团队最近发布了一个新的开源 Agent 框架,名为 OpenAgents. 它可以用于实际用户场景,特别是在使用自然语言执行复杂任务的情况下。先前的语言智能体框架主要关注概念验证或者供开发人员使用&…...

Prometheus metrics数据抓取解析

Prometheus node的监控数据如链接展示,我们希望能更加方便的看到监控数据,shodan对Prometheus metrics 的数据做了格式化处理。172.96.3.215:9100/metricshttp://172.96.3.215:9100/metrics 本文我自己实现了一个命令行工具,可以输出类shodan…...

【算法训练-排序算法 三】【排序应用】合并区间

废话不多说,喊一句号子鼓励自己:程序员永不失业,程序员走向架构!本篇Blog的主题是【合并区间】,使用【数组】这个基本的数据结构来实现,这个高频题的站点是:CodeTop,筛选条件为&…...

【iOS】计算器仿写

文章目录 前言一、构建View界面二、Model中进行数据处理三、Controller层实现View与Model交互总结 前言 在前两周组内进行了计算器的仿写,计算器仿写主要用到了MVC框架的思想以及数据结构中用栈进行四则运算的思想,还有就是对OC中的字符串进行各种判错操…...

华为认证 | 华为HCIE认证该怎样备考?

华为HCIE认证是华为认证的最高级别,拥有了华为HCIE认证就代表拥有了华为官方认可的专家级技术水平。 因此HCIE认证的考试难度是非常高的,备考华为认证HCIE需要一定的准备和规划。 整理了一些简单易懂的指南,希望对各位备考的小伙伴一些帮助…...

10月份stable diffusion animatediff等插件使用指南,又来更新了

插件一直会更新,包含了基本市面上流行的90%插件,好用的插件更是不会错过,往期插件请看往期文章,如果你没有时间一直关注sd更新的进展,请关注我,一个月用几个小时看一下我的文章,最短时间跟进sd。…...

抓包工具charles修改请求和返回数据

数据篡改的主要使用场景: (1)mock场景,mock入参和返回值参数,实现mock测试 (2)安全测试,对于支付金额等比较重要的字段,可以修改请求参数来进行安全测试 1.首先选择要…...

matlab中绘制 维诺图(Voronoi Diagram)

1.专业术语(相关概念): 基点Site:具有一些几何意义的点 细胞Cell:这个Cell中的任何一个点到Cell中基点中的距离都是最近的,离其他Site比离内部Site的距离都要远。 Cell的划分:基点Site与其它的…...

Mybatis TypeHandler 介绍及使用

Mybatis TypeHandler类型转换器是负责Java类和jdbc类型之间的转换 主要涉及到下面这几个类: TypeHandler 类型转换器的顶层接口BaseTypeHandler 抽象类继承自TypeHandler,Mybatis中所有的类型转换器实现均继承他。TypeHandlerRegistry 类型转换器注册器…...

Linux SVN 命令详解

1、将文件 checkout 到本地目录 svn checkout path(path是服务器上的目录) 例如:svn checkout svn://192.168.1.1/pro/domain 简写:svn co 2、往版本库中添加新的文件 svn add file 例如:svn add test.php(添加test.…...

Maven依赖引入的优先机制

xxxx待持续更新...

全开源无加密跨境电商购物网站系统源码(无货源模式+多语言+多货币)

在全球化的时代背景下,跨境电商成为了越来越受欢迎的消费方式,而建立一个源码无加密多语言跨境购物网站系统是一个具有挑战性的任务,但完全可行。以下是这个过程的一些主要步骤: 1. 确定需求和功能规划:先确定网站需要…...

Python常用视频编辑操作——读取与保存视频、更改帧数、拼接视频、视频语音合并、视频与图像互转等

1.更改视频帧数 降低视频帧数,简单的操作只能降低视频帧数,如果要增加视频帧数,那就要使用深度学习进行插帧处理: import cv2 from moviepy.editor import * def change_fps(inpt_path,output_path,fps):# 加载视频video Video…...

从javascript到vue再到react的演变

当提到前端开发中的框架时,JavaScript、Vue.js和React.js是三个最常见的名词。它们代表了Web开发中不同的技术选择和演变过程。本文将探讨JavaScript从原生到Vue.js再到React.js的演变,以及每个阶段的特点和优势。 JavaScript: 动态语言的基础 JavaScr…...

50个渗透(黑客)常用名词及解释

目录 前言一、渗透测试1. 渗透测试:2. 黑盒测试:3. 白盒测试:4. 社会工程学:5. 缓冲区溢出:6. 拒绝服务攻击:7. DDoS攻击:8. XSS攻击:9. CSRF攻击:10. SQL注入&#xff1…...

开源游戏引擎和模拟器的项目合集 | 开源专题 No.38

yuzu-emu/yuzu Stars: 26.2k License: GPL-3.0 yuzu是一款全球最受欢迎的开源Nintendo Switch模拟器,由Citra创建者编写。它采用C语言编写,并具有可移植性,在Windows和Linux上进行积极维护。该模拟器能够全速运行大多数商业游戏&#xff0c…...

在HarmonyOS ArkTS ArkUI-X 5.0及以上版本中,手势开发全攻略:

在 HarmonyOS 应用开发中,手势交互是连接用户与设备的核心纽带。ArkTS 框架提供了丰富的手势处理能力,既支持点击、长按、拖拽等基础单一手势的精细控制,也能通过多种绑定策略解决父子组件的手势竞争问题。本文将结合官方开发文档&#xff0c…...

ssc377d修改flash分区大小

1、flash的分区默认分配16M、 / # df -h Filesystem Size Used Available Use% Mounted on /dev/root 1.9M 1.9M 0 100% / /dev/mtdblock4 3.0M...

基于uniapp+WebSocket实现聊天对话、消息监听、消息推送、聊天室等功能,多端兼容

基于 ​UniApp + WebSocket​实现多端兼容的实时通讯系统,涵盖WebSocket连接建立、消息收发机制、多端兼容性配置、消息实时监听等功能,适配​微信小程序、H5、Android、iOS等终端 目录 技术选型分析WebSocket协议优势UniApp跨平台特性WebSocket 基础实现连接管理消息收发连接…...

理解 MCP 工作流:使用 Ollama 和 LangChain 构建本地 MCP 客户端

🌟 什么是 MCP? 模型控制协议 (MCP) 是一种创新的协议,旨在无缝连接 AI 模型与应用程序。 MCP 是一个开源协议,它标准化了我们的 LLM 应用程序连接所需工具和数据源并与之协作的方式。 可以把它想象成你的 AI 模型 和想要使用它…...

Go 语言接口详解

Go 语言接口详解 核心概念 接口定义 在 Go 语言中,接口是一种抽象类型,它定义了一组方法的集合: // 定义接口 type Shape interface {Area() float64Perimeter() float64 } 接口实现 Go 接口的实现是隐式的: // 矩形结构体…...

渲染学进阶内容——模型

最近在写模组的时候发现渲染器里面离不开模型的定义,在渲染的第二篇文章中简单的讲解了一下关于模型部分的内容,其实不管是方块还是方块实体,都离不开模型的内容 🧱 一、CubeListBuilder 功能解析 CubeListBuilder 是 Minecraft Java 版模型系统的核心构建器,用于动态创…...

将对透视变换后的图像使用Otsu进行阈值化,来分离黑色和白色像素。这句话中的Otsu是什么意思?

Otsu 是一种自动阈值化方法,用于将图像分割为前景和背景。它通过最小化图像的类内方差或等价地最大化类间方差来选择最佳阈值。这种方法特别适用于图像的二值化处理,能够自动确定一个阈值,将图像中的像素分为黑色和白色两类。 Otsu 方法的原…...

Java-41 深入浅出 Spring - 声明式事务的支持 事务配置 XML模式 XML+注解模式

点一下关注吧!!!非常感谢!!持续更新!!! 🚀 AI篇持续更新中!(长期更新) 目前2025年06月05日更新到: AI炼丹日志-28 - Aud…...

学习STC51单片机32(芯片为STC89C52RCRC)OLED显示屏2

每日一言 今天的每一份坚持,都是在为未来积攒底气。 案例:OLED显示一个A 这边观察到一个点,怎么雪花了就是都是乱七八糟的占满了屏幕。。 解释 : 如果代码里信号切换太快(比如 SDA 刚变,SCL 立刻变&#…...

Unity | AmplifyShaderEditor插件基础(第七集:平面波动shader)

目录 一、👋🏻前言 二、😈sinx波动的基本原理 三、😈波动起来 1.sinx节点介绍 2.vertexPosition 3.集成Vector3 a.节点Append b.连起来 4.波动起来 a.波动的原理 b.时间节点 c.sinx的处理 四、🌊波动优化…...