嵌入式学习笔记 - freeRTOS同优先级任务时间片抢占的实现

article/2025/8/24 9:20:29

已经知道freeRTOS的任务切换函数发生在systick中断中,如下图

由上图可见,任务切换有个先决条件TaskIncrementTick()函数返回为1,这个函数如下图,

第564行是判断如果延时时间到的任务比当前任务优先级高,使能切换,这个自然是正常逻辑。

其中等于的情况也包含了,不然如果不切换的话会一直执行一个任务,配合任务切换函数用的是listGET_OWNER_OF_NEXT_ENTRY,总是指向下一个节点任务,既使不使能时间片抢占,同优先级任务到期也可以依次切换执行。

如果是大于的情况,那么使用listGET_OWNER_OF_NEXT_ENTRY也是指向当前到期的任务,因为taskSELECT_HIGHEST_PRIORITY_TASK()函数实现里关于listGET_OWNER_OF_NEXT_ENTRY()的函数实现里( pxConstList )->pxIndex总是指向end节点之前,而时间到期插入就绪任务时使用的是insertEnd();总是插入最后一个节点,即便前面还有一个节点也不会错过这个节点。

第576行至第582行就是判断是否执行实现时间片抢占的部分,第570行是个宏定义在配置文件中,

第579行是判断当前任务优先级链表里是否有其他任务,如果有使能切换

下图是任务切换taskYIELD();的最终实现,依次调用:

最后一个函数第120行就实现了将想要切换的任务的任务控制块指针赋值给pxCurrentTCB.

pendSV 最终根据pxCurrentTCB 第一项指示的栈顶地址,将任务栈的内容更改到msp的指针以及PC的指针以及其他寄存器实现任务切换。


http://www.hkcw.cn/article/nAnXEyYKTA.shtml

相关文章

Cisco Packer Tracer 中 VLAN 与三层交换机

一、实验目的 1)掌握 VLAN 的基本配置方法, 理解 VLAN 的功能和作用; 2)掌握三层交换机的基本配置方法。 3)理解三层网络的路由转发 二、实验环境 1)运行 Windows 2008 Server/XP/7 /10操作系统的 PC …

数据结构——哈希表

一、概念 哈希表也叫做散列表。是根据关键码值(Key Value)直接进行访问的数据结构。 哈希表通过「键 key 」和「映射函数 Hash(key) 」计算出对应的「值 value」,把关键码值映射到表中一个位置来访问记录,以加快查找的速度。这个…

Kotlin中的::操作符详解

Kotlin提供了::操作符,用于创建对类或对象的成员(函数、属性)的引用。这种机制叫做成员引用(Member Reference)。这是Kotlin高阶函数和函数式编程的重要组成部分。 简化函数传递 在Java中,我们这样传方法: list.forEach(item -> System.…

K8S集群主机网络端口不通问题排查

一、环境: k8s: v1.23.6 docker: 20.10.14 问题和故障现象:devops主机集群主机节点到端口8082不通(网络策略已经申请,并且网络策略已经实施完毕),而且网络实施人员再次确认,网络策…

回调函数的理解

int yuxiangrousi 0; // 全局变量:鱼香肉丝(酱油量)// 回调函数:妈妈处理酱油(将酱油加入鱼香肉丝) void mother_callback(int new_jiangyou) {yuxiangrousi new_jiangyou; // 把酱油放进鱼香肉丝 }// 孩…

python字符重复一次 2023年信息素养大赛复赛/决赛真题 小学组/初中组 python编程挑战赛 真题详细解析

python字符重复一次 2023全国青少年信息素养大赛Python编程挑战赛复赛真题解析 博主推荐 所有考级比赛学习相关资料合集【推荐收藏】1、Python比赛 信息素养大赛Python编程挑战赛 蓝桥杯python选拔赛真题详解

【笔记】suna部署之获取 Supabase API key 和 project URL

#工作记录 Supabase | The Open Source Firebase Alternative 一、注册与登录 方式一:GitHub 授权登录 在登录页面选择 “继续使用 GitHub” ,跳转到 GitHub 授权页面(如图 5 所示)。确认 “Supabase 的想要访问您的 [账户名] 帐…

从法律层面剖析危化品证书:两证一证背后的安全逻辑

《安全生产法》第 24 条明确规定,危化品单位主要负责人和安全管理人员 “必须考核合格方可上岗”。这并非仅仅是行政要求,而是通过法律来筑牢安全防线。在某危化品仓库爆炸事故中,由于负责人未持证,导致事故责任升级,企…

MMR搜索和LangChain整合Milvus实战

引言 在现代信息检索系统的构建过程中,搜索策略的选择往往决定了用户体验的质量。相似度搜索与MMR最大边界相关搜索作为两种主流技术方案,各自承担着不同的使命:前者专注于精确匹配,后者致力于平衡相关性与多样性。 本文将通过深入…

C++容器进阶:深入解析unordered_map与unordered_set的前世今生

目录 🚀 引言:现代C容器的王者 🎯 学习路径 第一章:哈希表的数学魔法 1.1 哈希表的基本概念 哈希表的数学模型 1.2 哈希函数的设计艺术 第二章:unordered_map的深度解析 2.1 unordered_map的设计哲学 2.2 uno…

TDengine 运维——巡检工具(安装前检查)

简介 本文档旨在介绍 TDengine 安装部署前后配套的巡检工具。 相关工具的功能简介: 工具名称功能简介安装前检查部署前对 TDengine 安装部署的依赖要素进行安装前检查安装前预配置部署前对 TDengine 安装部署的依赖要素进行安装前预配置安装部署指定环境安装部署…

两个频率比较接近的简谐振动叠加后会产生拍形

两个频率比较接近的简谐振动叠加后会产生拍形。 import numpy as np import matplotlib.pyplot as plt# Parameters f1 10.0 # Frequency of the first vibration (Hz) f2 10.5 # Frequency of the second vibration (Hz) t_max 10 # Time range (seconds) t np.linsp…

安科瑞Acrelcloud-6200系统:智慧路灯安全用电监控平台架构解析

安科瑞顾强———Acrelgq 智慧路灯作为智慧城市与新基建的核心载体,集成了大量异元异构电子设备,其供电安全与能效管理面临电压多样、权属分散、扩展性不足等挑战。本文提出一种融合统一供电、分路计量、智能防护与远程监控的解决方案,通过构…

706万彩票大奖无人认领 兑奖期限已过

706万彩票大奖无人认领 兑奖期限已过!5月7日,广东东莞福彩官微发布了一篇寻找东莞706万大奖得主的文章。然而20多天过去了,大奖得主仍未现身兑奖。5月29日下午,东莞市福彩发行中心表示,如果当天未见得主前来领奖,将视为弃奖处理,奖金将用于扶老、助残等公益事业。据报道…

Scratch节日 | 拯救屈原 | 端午节

端午节快乐! 这款特别为端午节打造的Scratch游戏 《拯救屈原》,将带你走进古代中国,感受历史与文化的魅力! 🏮 游戏介绍 扮演勇敢的探险者,穿越时空回到古代,解锁谜题,完成任务&…

上海一款罕见肿瘤靶向药获批 填补治疗空白

上海一款罕见肿瘤靶向药获批 填补治疗空白。国家药品监督管理局通过优先审评审批程序批准了上海复星医药产业发展有限公司申报的1类创新药芦沃美替尼片(商品名:复迈宁)。这是上海今年第6款获批上市的国产1类创新药,也是近期又一款获批上市的罕见病用药。复迈宁本次获批的两…

【开发技巧指北】IDEA修改默认绑定Maven的仓库地址

【开发技巧指北】IDEA修改默认绑定Maven的仓库地址 Microsoft Windows 11 家庭中文版 IIntelliJ IDEA 2025.1.1.1 默认的IDEA是有自己捆绑的Maven的(这是修改完毕的截图) 修改默认的Maven配置,路径是IDEA安装路径下的plugins D:\Softwares\I…

小程序为什么要安装SSL安全证书

小程序需要部署SSL安全证书,这是小程序开发及运营的强制性要求,也是保障用户数据安全、提升用户体验和满足平台规范的必要措施。 一、平台强制要求 微信小程序官方规范 微信小程序明确要求所有网络请求必须通过HTTPS协议传输,服务器域名需配…

Nest全栈到失业(三):半小时图书管理系统-User

用户模块 创建用户 先使用nest g resource user --no-spec 创建一个用户的模块,并选择他的CRUD操作 写一个注册接口 import { Controller, Post, Body } from nestjs/common; import { UserService } from ./user.service; import { RegisterUserDto } from ./dto/register-us…

美创专家分享医疗数据安全分类分级实践与探索

医疗数据安全分类分级 近日,由浙江卫生信息学会主办的2025年卫生健康网络数据安全培训会(宁波站)顺利举办,美创科技专家许钰钢受邀分享《医疗数据安全分类分级实践与探索》,系统解析医疗行业数据安全分类分级的实施必…